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