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

时间:2013-10-15 01:00:29

标签: python django django-models django-queryset

假设我有以下型号:

class User(models.Model):
    blogs = model.ManyToManyField(Blog)

为多个用户向该字段添加博客的最佳方式是,例如我想向所有用户添加一个名为博客的博客实例(即User.object.all())。我是否必须单独迭代每个结果,或者有没有办法一次完成所有这些?

感谢。

1 个答案:

答案 0 :(得分: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]
)

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