當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python Django RelatedManager.set用法及代碼示例


本文介紹 django.db.models.fields.related.RelatedManager.set 的用法。

聲明

set(objs, bulk=True, clear=False, through_defaults=None)

替換相關對象集:

>>> new_list = [obj1, obj2, obj3]
>>> e.related_set.set(new_list)

此方法接受 clear 參數來控製如何執行操作。如果是False(默認值),則使用remove() 刪除新集合中缺少的元素,並且隻添加新元素。如果 clear=True ,則調用 clear() 方法並立即添加整個集合。

對於 ForeignKey 對象,將 bulk 參數傳遞給 add() remove()

對於多對多關係,bulk 關鍵字參數不存在。

請注意,由於set() 是複合操作,因此它受製於競爭條件。例如,可以在調用 clear() 和調用 add() 之間將新對象添加到數據庫中。

對於多對多關係set() 接受模型實例或字段值的列表,通常是主鍵,作為objs 參數。

如果需要,使用 through_defaults 參數為新的中間模型實例指定值。您可以將可調用對象用作 through_defaults 字典中的值,並且它們將在創建任何中間實例之前被評估一次。

注意

請注意,add()create()remove()clear()set() 都立即對所有類型的相關字段應用數據庫更改。換句話說,不需要在關係的任何一端調用save()

如果您使用 prefetch_related() ,則 add()remove()clear()set() 方法會清除預取緩存。

相關用法


注:本文由純淨天空篩選整理自djangoproject.com大神的英文原創作品 django.db.models.fields.related.RelatedManager.set。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。