如何在Django中一次添加多个对象到ManyToMany关系?
基于Django文档,我应该能够一次传递多个对象,以添加到许多关系,但我得到
* TypeError:不可用types:'list'
当我尝试传递一个Django的查询集列表中。 传递一个Queryset或一个ValuesListQueryset似乎也失败了。 有没有比使用for循环更好的方法?
按照文档中的描述使用: 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() # Turns it into a list permissions = list(permissions) # Add the results to the many to many field (notice the *) group = MyGroup.objects.get(name='test') group.permissions.add(*permissions) 
From: 将查询集结果插入ManytoManyfield
Django 1.9添加了添加到多对多关系的其他方法。
文档: https : //docs.djangoproject.com/en/1.9/ref/models/relations/#django.db.models.fields.related.RelatedManager.set
  set是一个新的细微: 
 >>> new_list = [obj1, obj2, obj3] >>> e.related_set.set(new_list)