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)建類(lèi)
from django.forms import ModelForm from django.forms import widgets as wd from app01 import models class 類(lèi)名(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 = 類(lèi)名(instance=obj,data=request.POST)
instance傳的是已有的對(duì)象(在頁(yè)面中顯示默認(rèn)值)
data傳的是從頁(yè)面返回過(guò)來(lái)的值(用戶(hù)輸入的值 ,用來(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)文章
python實(shí)現(xiàn)復(fù)制整個(gè)目錄的方法
這篇文章主要介紹了python實(shí)現(xiàn)復(fù)制整個(gè)目錄的方法,涉及Python中shutil模塊的相關(guān)操作技巧,需要的朋友可以參考下2015-05-05Python NumPy創(chuàng)建數(shù)組方法
這篇文章主要介紹了Python NumPy創(chuàng)建數(shù)組方法,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-09-09PyTorch中torch.matmul()函數(shù)常見(jiàn)用法總結(jié)
torch.matmul()也是一種類(lèi)似于矩陣相乘操作的tensor連乘操作。但是它可以利用python中的廣播機(jī)制,處理一些維度不同的tensor結(jié)構(gòu)進(jìn)行相乘操作,這篇文章主要介紹了PyTorch中torch.matmul()函數(shù)用法總結(jié),需要的朋友可以參考下2023-04-04Python深度學(xué)習(xí)albumentations數(shù)據(jù)增強(qiáng)庫(kù)
下面開(kāi)始albumenations的正式介紹,在這里我強(qiáng)烈建議英語(yǔ)基礎(chǔ)還好的讀者去官方網(wǎng)站跟著教程一步步學(xué)習(xí),而這里的內(nèi)容主要是我自己的一個(gè)總結(jié)以及方便英語(yǔ)能力較弱的讀者學(xué)習(xí)2021-09-09Python 獲取 datax 執(zhí)行結(jié)果保存到數(shù)據(jù)庫(kù)的方法
今天小編就為大家分享一篇Python 獲取 datax 執(zhí)行結(jié)果保存到數(shù)據(jù)庫(kù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07python3利用pathlib替代os.path的方法實(shí)例
os.path 模塊始終是適合Python運(yùn)行的操作系統(tǒng)的路徑模塊,因此可用于本地路徑,下面這篇文章主要給大家介紹了關(guān)于python3利用pathlib替代os.path的相關(guān)資料,需要的朋友可以參考下2022-04-04Pytorch之Tensor和Numpy之間的轉(zhuǎn)換的實(shí)現(xiàn)方法
這篇文章主要介紹了Pytorch之Tensor和Numpy之間的轉(zhuǎn)換的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Python?Collections庫(kù)的高級(jí)功能使用示例詳解
Python的collections庫(kù)提供了一系列有用的數(shù)據(jù)類(lèi)型,擴(kuò)展了內(nèi)建的數(shù)據(jù)類(lèi)型,為開(kāi)發(fā)者提供了更多高級(jí)功能,本文將深入探討collections庫(kù)的一些高級(jí)功能,通過(guò)詳細(xì)的示例代碼演示,幫助大家更好地理解和應(yīng)用這些功能2023-12-12