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


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