更新時(shí)間:2023-01-13 來(lái)源:黑馬程序員 瀏覽量:
利用Django提供的modelformset_factory()函數(shù)可以簡(jiǎn)單地定義給定模型類(lèi)的FormSet類(lèi),進(jìn)而實(shí)現(xiàn)模型表單的批量操作。modelformset_factory()定義在django.forms模塊中,以Goods模型類(lèi)為例,示例代碼如下:
from django.forms import modelformset_factory from goods.models import Goods GoodFormset = modelformset_factory(Goods, fields=('name','price'))
以上代碼在生成表單集的同時(shí)利用參數(shù)fields選擇了表單使用的字段。下面以GoodFormSet為例,介紹模型表單集的常用操作。
1.字段選擇
通過(guò)modelformset_factory()函數(shù)的參數(shù)fields和exclude選擇模型類(lèi)中的字段作為表單字段。使用exclude參數(shù)排除表單不需要的字段,示例代碼如下:
GoodFormSet = modelformset_factory(Goods, exclude=('stock',))
2.更改查詢(xún)集
默認(rèn)情況下表單集接收模型類(lèi)的全部數(shù)據(jù)作為查詢(xún)集,通過(guò)modelformset_factory()函數(shù)的參數(shù)queryset可以更改查詢(xún)集,示例代碼如下:
formset = GoodFormSet(queryset=Goods.objects.filter(name_startswith='H'))
3.在表單集中保存對(duì)象
類(lèi)似ModelForm,模型表單集中的數(shù)據(jù)也可以通過(guò)save()方法保存為模型對(duì)象,示例代碼如下:
f = GoodFormSet({'name':'IPAD 2018','price':5999,'stock':5,'sales':4}) instances = f.save()
模型表單集的save()方法返回已經(jīng)保存到數(shù)據(jù)庫(kù)的實(shí)例。如果表單集中的數(shù)據(jù)不會(huì)覆蓋給定實(shí)例的數(shù)據(jù),那么這個(gè)實(shí)例不會(huì)被保存到數(shù)據(jù)庫(kù),也不會(huì)包含在返回值里。
Python學(xué)起來(lái)簡(jiǎn)單嗎?零基礎(chǔ)可以學(xué)習(xí)嗎?
2023-01-12哪些語(yǔ)言可以用來(lái)開(kāi)發(fā)網(wǎng)絡(luò)爬蟲(chóng)程序?
2023-01-12表單字段的通用參數(shù)都有哪些?【PythonWeb知識(shí)】
2023-01-12Python程序員應(yīng)會(huì)的數(shù)據(jù)表基本操作:創(chuàng)建數(shù)據(jù)表
2023-01-112023年python培訓(xùn)班哪個(gè)靠譜?資源福利python學(xué)習(xí)教程全套下載
2023-01-09為什么前后端埋點(diǎn)不能分開(kāi)使用【數(shù)據(jù)埋點(diǎn)注意事項(xiàng)】
2023-01-05