Django中modelform元件例項用法總結
modelform是model衍生出來的form .
modelform的用法非常死.
首先在models.py裡建立模型表.
所有的form元件單獨放在form.py檔案,其他地方引入form就可以.
建立modelfrom
只要告訴modelform哪一個模型表,它會自動幫我們比對models模型表字段,並衍生成form元件.它不光給我們提供form元件,還有元件沒有的功能.
所有欄位都生成form元件.
fields="__all__"
username和password欄位生成form元件.
fields=['username','password']
排除gender欄位以外都生成form元件.
exclude=['gender']
modelform用在兩個地方,一個是新增,一個是編輯.
新增資料
form新增資料先從form取資料,然後在用models插入資料.
modelform直接form.save()就可以插入資料.
編輯資料get請求.
form傳值給模板的時候要新增instance資料,否則模板渲染的時候value是空的.
編輯資料post請求.
form.save()的時候要給form新增instance資料,否則會變成create操作,不是update更新操作.
知識點擴充套件
建立類
from django.forms import ModelForm from django.forms import widgets as wd from app01 import models class 類名(ModelForm): class Meta: model = models.表名 #models中的表名 fields="__all__",# 欄位 exclude=None,# 排除欄位 widgets=None,# 自定義外掛 error_messages=None,# 自定義錯誤資訊(整體錯誤資訊from django.core.exceptions import NON_FIELD_ERRORS) def clean_欄位名 #自定義鉤子函式
例項化物件
form = 類名(instance=obj,data=request.POST)
instance傳的是已有的物件(在頁面中顯示預設值)
data傳的是從頁面返回過來的值(使用者輸入的值 ,用來驗證)
form.is_valid() #驗證
form.save #將資料儲存至資料庫中(如果有instance引數就修改資料庫中的記錄,如果沒有instance引數就在資料庫中新增新的一條記錄)
以上這篇基於Django的ModelForm元件(詳解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。