Django - Creating forms from models

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鏈接的modelArticle.

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. 如果想要額外添加UserUserForm以外的fields則可以如代碼例中添加password1

另外, fields = ['username', 'email', 'password', 'is_active']中不屬于User的部分會(huì)無(wú)法存入默認(rèn)的UserModel

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容