web-dev-qa-db-ja.com

django 1.4多対多の一括追加

クエリの数を減らす多対多の関係に「すべて追加」または「一括作成」に相当するものがあるかどうか疑問に思いました(これは長いリストに対して行います)。

この主題に関するドキュメントは、これが不可能であることを示唆しているようです。

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)
26
snakesNbronies

もちろん可能です!明示的な 中間テーブル を作成してから、このモデルのbulk_createメソッドを使用する必要があります。

8
rantanplan

多対多のリレーションモデルのメソッドを一括追加または削除するためにクエリセットを追加する場合:

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

publications.article_set.add(*qs)
publications.save()
publications.article_set.remove(*qs)
publications.save()
33
zzart