1. 程式人生 > 程式設計 >Django中modelform元件例項用法總結

Django中modelform元件例項用法總結

modelform是model衍生出來的form .

modelform的用法非常死.

首先在models.py裡建立模型表.

Django中modelform元件例項用法總結

所有的form元件單獨放在form.py檔案,其他地方引入form就可以.

Django中modelform元件例項用法總結

建立modelfrom

只要告訴modelform哪一個模型表,它會自動幫我們比對models模型表字段,並衍生成form元件.它不光給我們提供form元件,還有元件沒有的功能.

Django中modelform元件例項用法總結

所有欄位都生成form元件.

fields="__all__"

username和password欄位生成form元件.

fields=['username','password']

排除gender欄位以外都生成form元件.

exclude=['gender']

Django中modelform元件例項用法總結

modelform用在兩個地方,一個是新增,一個是編輯.

新增資料

form新增資料先從form取資料,然後在用models插入資料.

modelform直接form.save()就可以插入資料.

Django中modelform元件例項用法總結

編輯資料get請求.

form傳值給模板的時候要新增instance資料,否則模板渲染的時候value是空的.

Django中modelform元件例項用法總結

編輯資料post請求.

form.save()的時候要給form新增instance資料,否則會變成create操作,不是update更新操作.

Django中modelform元件例項用法總結

知識點擴充套件

建立類

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元件(詳解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。