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


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


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

聲明

add(*objs, bulk=True, through_defaults=None)

將指定的模型對象添加到相關對象集中。

例子:

>>> b = Blog.objects.get(id=1)
>>> e = Entry.objects.get(id=234)
>>> b.entry_set.add(e) # Associates Entry e with Blog b.

在上麵的示例中,在 ForeignKey 關係的情況下, QuerySet.update() 用於執行更新。這要求對象已經被保存。

您可以使用 bulk=False 參數來讓相關管理器通過調用 e.save() 來執行更新。

但是,將 add() 與多對多關係一起使用不會調用任何 save() 方法(bulk 參數不存在),而是使用 QuerySet.bulk_create() 創建關係。如果您需要在創建關係時執行一些自定義邏輯,請監聽 m2m_changed 信號,該信號將觸發 pre_addpost_add 動作。

在已存在的關係上使用add() 不會複製該關係,但仍會觸發信號。

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

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

相關用法


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