'form'的值必须从django

时间:2017-07-10 17:15:57

标签: python django django-models

我正在制作一个简单的表格来接收用户的信息并使用django在下一页上显示。 但是我收到错误'form'的值必须从'BaseModelForm'继承,当我尝试从ModelForm继承时,它会显示没有模块ModelForm的错误。

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)

name.html

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

1 个答案:

答案 0 :(得分:0)

您在发布的所有文件中都定义了NameForm,并且您还在NameForm文件中导入了一个名为forms.py的模型。您不应将表单命名为与Model相同的名称。

您还使用from foo import *语法导入所有内容,这非常糟糕,因为您可能会使用模型定义覆盖NameForm,反之亦然。

在您的HTML中,您执行的操作{{NameForm}}不正确。使用forms.Form类在HTML中呈现表单的正确方法是{{ form }}