from django import forms
from .models import NewsSignUp
class NewsSignUpForm(forms.ModelForm):
class Meta:
model = NewsSignUp
fields = ['email', 'first_name']
here
这个代码工作得很好。但是,当我删除下面的“class Meta:”时,它抛出一个ValueError,说“ModelForm没有指定模型类”
from django import forms
from .models import NewsSignUp
class NewsSignUpForm(forms.ModelForm):
model = NewsSignUp
fields = ['email', 'first_name']
有人能解释一下吗?:(
最佳答案
您正在创建一个ModelForm
子类。一个模型表单必须有一个模型来工作,而Meta
对象对此进行了配置。
。。
然后,Meta
类主体本身的命名空间(在model
之外)被保留给表单字段本身以及表单方法。通常,您只需让class Meta:
从您的模型生成这些字段,但原则上,您可以向其中添加字段。。
从Model Forms documentation开始:ModelForm
是一个可以自动生成特定字段的常规ModelForm
。自动生成的字段取决于Meta
类的内容以及已声明定义的字段。基本上,ModelForm
只会生成表单中缺少的字段,或者换句话说,生成的字段不是以声明方式定义的。
。
因为ModelForm
希望在Form
名称下设置配置,所以您不能删除它并将Meta
和ModelForm
放入Meta
类本身;这是错误的地方。