2012-06-01 24 views
21

クエリの数を減らす多対多リレーションシップの「すべて追加」または「一括作成」に相当するものがあるかどうかは疑問でした。長いリスト)?このテーマに関する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) 

答えて

4

それが可能です! intermediate tableと を明示的に作成してから、このモデルのbulk_createメソッドを使用するだけです。

+17

実際には、明示的な中間テーブルは必要ありません、http://stackoverflow.com/aを参照してください/ 10116452/5112 –

+0

@Tim私はそれを忘れてしまった。いいキャッチ! – rantanplan

23

あなたは多くの関係のモデルに多くの方法を追加または削除バルクにクエリセットを追加したい場合は、次の

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

publications.article_set.add(*qs) 
publications.save() 
publications.article_set.remove(*qs) 
publications.save() 
+1

'publications.article_set.set(qs)'も同様に使うことができます。 – citadelgrad

関連する問題