我想知道是否有相当于 "全部添加 "或 "批量创建 "的方法,可以减少查询的次数(我将为一个长长的列表做这件事)?
这个主题的文档似乎表明这是不可能的。
https:/docs.djangoproject.comendevtopicsdbexamplesmany_to_many。
**Associate the Article with a Publication:**
a1.publications.add(p1)
**Create another Article, and set it to appear in both Publications:**
a2 = Article(headline='NASA uses Python')
a2.save()
a2.publications.add(p1, p2)
a2.publications.add(p3)
当然,这是可能的! 你只需要创建一个显式的 中间表 然后用这个模型的 bulk_create
方法。
如果你想把queryset添加到批量添加或删除多个关系模型的方法中。
qs = Article.objects.all()
publications = Publications.objects.get(id=1)
publications.article_set.add(*qs)
publications.save()
publications.article_set.remove(*qs)
publications.save()
你可以只使用 RelatedManager.set
为这。
a2 = Article(headline='NASA uses Python')
a2.save()
a2.publications.set([p1, p2, p3])
文件 同时也告诉我们,没有必要叫作 .save()
在最后。