django 1.4多对多批量添加

sna*_*ies 26 django many-to-many

我想知道是否有相当于"添加全部"或"批量创建"的多对多关系,这减少了查询的数量(我会为长列表这样做)?

关于这个主题的文档似乎暗示这是不可能的:

https://docs.djangoproject.com/en/dev/topics/db/examples/many_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)
Run Code Online (Sandbox Code Playgroud)

zza*_*art 34

如果要添加查询集以批量添加或删除多对多关系模型的方法:

qs = Article.objects.all()
publications = Publications.objects.get(id=1)

publications.article_set.add(*qs)
publications.save()
publications.article_set.remove(*qs)
publications.save()
Run Code Online (Sandbox Code Playgroud)

  • 你也可以使用`publications.article_set.set(qs)`. (3认同)

ran*_*lan 8

当然有可能!您只需创建一个显式中间表,然后使用此模型的bulk_create方法.

  • 实际上,不需要显式中间表,请参阅http://stackoverflow.com/a/10116452/5112 (18认同)