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
.
一個更復(fù)雜的場景是, form
本身繼承另一個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'}),
}
在此種場景下, fields = ['username', 'email', 'password', 'is_active']
里的元素不僅僅可以是User
的fields, 還可以UserForm
的fields. 如果想要額外添加User
和UserForm
以外的fields則可以如代碼例中添加password1
另外, fields = ['username', 'email', 'password', 'is_active']
中不屬于User
的部分會無法存入默認(rèn)的User
Model