Answers:
用途:object.m2mfield.add(*items)
如文档中所述:
add()
接受任意数量的参数,而不是它们的列表。
add(obj1, obj2, obj3, ...)
要将列表扩展为参数,请使用 *
add(*[obj1, obj2, obj3])
Django不会要求obj.save()
每个项目,而是使用bulk_create()
。
要添加,如果要从查询集中添加它们
例
# Returns a queryset
permissions = Permission.objects.all()
# Add the results to the many to many field (notice the *)
group = MyGroup.objects.get(name='test')
group.permissions.add(*permissions)
Django 1.9添加了用于添加多对多关系的其他方法。
文档:https : //docs.djangoproject.com/en/dev/ref/models/relations/#django.db.models.fields.related.RelatedManager.set
set
是一个新东西:
>>> new_list = [obj1, obj2, obj3]
>>> e.related_set.set(new_list)
set
我一直都在那里。只是e.related_set = new_list
在旧版Django 中,用于完成分配的工作等效于e.related_set.set(new_list)
。他们只是意识到“明确胜于隐含”。