Django可以創(chuàng)建直接存入models的form, 叫做ModelForm
>>> from django.forms import ModelForm
>>> from myapp.models import Article
# Create the form class.
>>> class ArticleForm(ModelForm):
... class Meta:
... model = Article
... fields = ['pub_date', 'headline', 'content', 'reporter']
首先ArticleForm可以繼承ModelForm, 在ArticleForm的內(nèi)部類Meta中指定該Form鏈接的model是Article.
model = Article用于在admin.py中添加該model, 本文為例即應(yīng)當(dāng)是
from .models import Article
admin.site.register(Article)
fields = ['pub_date', 'headline', 'content', 'reporter']中的元素應(yīng)當(dāng)是Article中的field.
一個(gè)更復(fù)雜的場(chǎng)景是, form本身繼承另一個(gè)form, 舉例
class UserForm(UserCreationForm):
password1 = forms.CharField(widget=forms.PasswordInput())
class Meta:
model = User
fields = ['username', 'email', 'password', 'is_active']
widgets = {
'username': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Type a username'}),
'email': forms.EmailInput(attrs={'class': 'form-control', 'placeholder': 'example@email.com'}),
}
在此種場(chǎng)景下, fields = ['username', 'email', 'password', 'is_active']里的元素不僅僅可以是User的fields, 還可以UserForm的fields. 如果想要額外添加User和UserForm以外的fields則可以如代碼例中添加password1
另外, fields = ['username', 'email', 'password', 'is_active']中不屬于User的部分會(huì)無(wú)法存入默認(rèn)的UserModel