Django中modelform組件實(shí)例用法總結(jié)
modelform是model衍生出來(lái)的form .
modelform的用法非常死.
首先在models.py里創(chuàng)建模型表.

所有的form組件單獨(dú)放在form.py文件,其他地方引入form就可以.

創(chuàng)建modelfrom
只要告訴modelform哪一個(gè)模型表,它會(huì)自動(dòng)幫我們比對(duì)models模型表字段,并衍生成form組件.它不光給我們提供form組件,還有組件沒(méi)有的功能.

所有字段都生成form組件.
fields="__all__"
username和password字段生成form組件.
fields=['username','password']
排除gender字段以外都生成form組件.
exclude=['gender']

modelform用在兩個(gè)地方,一個(gè)是添加,一個(gè)是編輯.
添加數(shù)據(jù)
form添加數(shù)據(jù)先從form取數(shù)據(jù),然后在用models插入數(shù)據(jù).
modelform直接form.save()就可以插入數(shù)據(jù).

編輯數(shù)據(jù)get請(qǐng)求.
form傳值給模板的時(shí)候要添加instance數(shù)據(jù),否則模板渲染的時(shí)候value是空的.

編輯數(shù)據(jù)post請(qǐng)求.
form.save()的時(shí)候要給form添加instance數(shù)據(jù),否則會(huì)變成create操作,不是update更新操作.

知識(shí)點(diǎn)擴(kuò)展
創(chuàng)建類
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, # 自定義錯(cuò)誤信息(整體錯(cuò)誤信息from django.core.exceptions import NON_FIELD_ERRORS) def clean_字段名 #自定義鉤子函數(shù)
實(shí)例化對(duì)象
form = 類名(instance=obj,data=request.POST)
instance傳的是已有的對(duì)象(在頁(yè)面中顯示默認(rèn)值)
data傳的是從頁(yè)面返回過(guò)來(lái)的值(用戶輸入的值 ,用來(lái)驗(yàn)證)
form.is_valid() #驗(yàn)證
form.save #將數(shù)據(jù)保存至數(shù)據(jù)庫(kù)中(如果有instance參數(shù)就修改數(shù)據(jù)庫(kù)中的記錄,如果沒(méi)有instance參數(shù)就在數(shù)據(jù)庫(kù)中添加新的一條記錄)
以上這篇基于Django的ModelForm組件(詳解)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
pytest測(cè)試框架+allure超詳細(xì)教程
這篇文章主要介紹了pytest測(cè)試框架+allure超詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-11-11
python lambda函數(shù)及三個(gè)常用的高階函數(shù)
這篇文章主要介紹了python lambda函數(shù)及三個(gè)常用的高階函數(shù),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02
Python JWT認(rèn)證與pyjwt包詳細(xì)介紹
JWT的聲明一般被用來(lái)在身份提供者和服務(wù)提供者間傳遞被認(rèn)證的用戶身份信息,以便于從資源服務(wù)器獲取資源,也增加一些額外的其它業(yè)務(wù)邏輯所必須的聲明信息,該token也可直接被用于認(rèn)證,也可被加密,這篇文章主要介紹了Python JWT認(rèn)證與pyjwt包簡(jiǎn)介,需要的朋友可以參考下2023-05-05
Python?PyJWT庫(kù)簡(jiǎn)化JSON?Web?Token的生成與驗(yàn)證
PyJWT庫(kù)為Python開(kāi)發(fā)者提供了簡(jiǎn)便的生成和驗(yàn)證JWT的工具,本文將深入介紹PyJWT庫(kù)的核心概念、功能以及實(shí)際應(yīng)用,通過(guò)豐富的示例代碼,幫助大家更全面地了解和應(yīng)用這一強(qiáng)大的JWT庫(kù)2023-12-12
Python3 使用pip安裝git并獲取Yahoo金融數(shù)據(jù)的操作
這篇文章主要介紹了Python3 使用pip安裝git并獲取Yahoo金融數(shù)據(jù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
python實(shí)現(xiàn)購(gòu)物車(chē)功能
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)購(gòu)物車(chē)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
Django中數(shù)據(jù)庫(kù)的數(shù)據(jù)關(guān)系:一對(duì)一,一對(duì)多,多對(duì)多
今天小編就為大家分享一篇關(guān)于Django中數(shù)據(jù)庫(kù)的數(shù)據(jù)關(guān)系:一對(duì)一,一對(duì)多,多對(duì)多,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10

