django 1.4 多对多批量添加。

问题描述 投票:27回答:3

我想知道是否有相当于 "全部添加 "或 "批量创建 "的方法,可以减少查询的次数(我将为一个长长的列表做这件事)?

这个主题的文档似乎表明这是不可能的。

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)
django many-to-many
3个回答
8
投票

当然,这是可能的! 你只需要创建一个显式的 中间表 然后用这个模型的 bulk_create 方法。


39
投票

如果你想把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()

0
投票

你可以只使用 RelatedManager.set 为这。

a2 = Article(headline='NASA uses Python')
a2.save()
a2.publications.set([p1, p2, p3])

文件 同时也告诉我们,没有必要叫作 .save() 在最后。

© www.soinside.com 2019 - 2024. All rights reserved.