当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。