Django之forms.ModelForm

一般在Django項目中,咱們編寫的大部分都是與Django 的模型緊密映射的表單。 舉個例子,你也許會有個Book 模型,而且你還想建立一個form表單用來添加和編輯書籍信息到這個模型中。 在這種狀況下,在form表單中定義字段將是冗餘的,由於咱們已經在模型中定義了那些字段。git

 

  基於這個緣由,Django 提供一個輔助類來讓咱們能夠從Django 的模型建立Form,這就是ModelFormui

 

modelForm定義

    formmodel的終極結合,會根據你model中的字段轉換成對應的form字段,而且並你生成標籤等操做。spa

 

    models中的表是下面的內容:插件

class Book(models.Model):orm

    nid = models.AutoField(primary_key=True)對象

    title = models.CharField( max_length=32)繼承

    publishDate=models.DateField()ip

    price=models.DecimalField(max_digits=5,decimal_places=2)ci

    publish=models.ForeignKey(to="Publish",to_field="nid")get

    authors=models.ManyToManyField(to='Author',)

    def __str__(self):

        return self.title

 

modelform類的寫法:

class BookForm(forms.ModelForm):

    class Meta:

        model = models.Book

        fields = "__all__"

        labels = {

            "title": "書名",

            "price": "價格"

        }

        widgets = {

            "password": forms.PasswordInput(attrs={"class": "c1"}),

 

            "publishDate": forms.DateInput(attrs={"type": "date"}),

        }

class Meta下經常使用參數:

model = models.Book  # 對應的Model中的類

fields =[]#指定字段

fields = "__all__"  # 字段,若是是__all__,就是表示列出全部的字段

exclude = []  # 排除的字段

labels = {}  # 提示信息

help_texts = {}  # 幫助提示信息

widgets = {# 自定義插件

            "password": forms.PasswordInput(attrs={"class": "c1"}),

            "publishDate": forms.DateInput(attrs={"type": "date"}),

        }

 error_messages = {# 自定義錯誤信息

    'title': {'required': '不能爲空', ...}  # 每一個字段的全部的錯誤均可以寫

}

 在繼承forms.ModelForm類時,models中的OnetooneManytomany屬性會自動轉換成ModelChoiceFieldModelMultipleChocieField自動讀取數據。 

 

ModelForm組件使用中添加數據,能夠直接用save()方法,在使用save方法時,若是對象在實例化時有指定第二個關鍵字參數instance,則爲更新操做!

相關文章
相關標籤/搜索