如何在Django中同时向ManyToMany关系添加多个对象?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (30)

基于Django文档,我应该能够同时传递多个对象,以便添加到多个关系中,但我得到了一个

*类型错误:无法形容的类型:“列表”

当我试图传递列表中的Django queryset时。传递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)

扫码关注云+社区