Django为查询集中的每个项添加多对多字段?

ip.*_*ip. 2 python django django-models django-queryset

假设我有以下型号:

class User(models.Model):
    blogs = model.ManyToManyField(Blog)
Run Code Online (Sandbox Code Playgroud)

为多个用户添加博客到场的最佳方法是什么,例如我想向所有用户添加一个名为博客的博客实例(即User.object.all()).我是否必须单独迭代每个结果,或者是否有办法一次完成所有操作?

谢谢.

jpr*_*itt 6

你可以bulk_create在直通桌上做一个.例如:

blog = Blog.objects.get(…)
users = User.object.all()

User.blogs.through.objects.bulk_create(
    [User.blogs.through(user_id=user.pk, blog_id=blog.pk) for user in users]
)
Run Code Online (Sandbox Code Playgroud)

这将进行一次数据库查询.