2017-07-10 14 views
0

私はユーザの情報を受け取り、次のページにdjangoを使って表示する簡単なフォームを作っています。 しかし、私はエラーを取得しています 'フォーム'の値は 'BaseModelForm'から継承しなければなりません。ModelFormから継承しようとすると、モジュールModelFormがないというエラーが表示されます。'form'の値はdjangoの 'BaseModelForm'から継承しなければなりません

admin.py 


from django.contrib import admin 
from .models import Album 
from .forms import NameForm 
from django.forms import * 
from django.db.models import * 
from models import * 

admin.site.register(Album) 


class MyModelAdmin(admin.ModelAdmin): 
form = NameForm 
admin.site.register(NameForm, MyModelAdmin) 


class NameFormAdmin(admin.ModelAdmin): 
form = NameForm 


class NameForm(forms.Form): 

class Meta: 
    model = NameForm 

views.py

from django.contrib import admin 
from .models import Album 
from .forms import NameForm 
from django.forms import * 
from django.db.models import * 
from models import * 

admin.site.register(Album) 


class MyModelAdmin(admin.ModelAdmin): 
form = NameForm 
admin.site.register(NameForm, MyModelAdmin) 


class NameFormAdmin(admin.ModelAdmin): 
form = NameForm 


class NameForm(forms.Form): 

class Meta: 
    model = NameForm 

forms.py

from django import forms 
from .models import NameForm 
from django.forms import ModelForm 


class NameForm(forms.Form): 
class Meta: 
    model = NameForm 
    fields = '__all__' 
your_name = forms.CharField(label="Your name", max_length=100) 

名.html

<form action="/profile/see" method="post"> 
{% csrf_token %} 
{{ NameForm }} 
<input type="submit" value="Submit" /> 
</form>  
+0

あなたのモデル 'NameForm'とあなたのフォーム' NameForm'の命名も問題を引き起こします。あなたの 'forms.py'では、import' from django import forms'を使い、 'forms.ModelForm'をサブクラス化します。 – Alasdair

答えて

0

あなたはまた、あなたを掲示し、すべてのファイルで定義されたNameFormを持っていますというモデルがありますforms.pyファイルにインポートするフォームにはモデルと同じ名前を付けてはいけません。

from foo import *構文を使用してすべてのものをインポートしていますが、これはモデル定義でNameFormを上書きする可能性があり、逆もまた可能です。

あなたのHTMLにはあなたのやっていること{{NameForm}}が間違っています。 forms.Formクラスを使用してHTMLでフォームをレンダリングする適切な方法は{{ form }}です。

関連する問題