2012-06-01 8 views
21

Sorguların sayısını azaltan pek çok ilişki için "tümünü ekle" veya "toplu oluşturma" eşdeğeri olup olmadığını merak ediyordum (bunu bir uzun liste)? Bu konudadjango 1.4 Çoktan çoğa toplu ekleme

docs bu mümkün olmadığını ileri sürer görünmektedir: Elbette

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) 

cevap

4

bu mümkün! Sadece açık bir intermediate table ve oluşturmalısınız, sonra bu modelin bulk_create yöntemini kullanın.

+17

Aslında açık ara tablo gerekli değildir, http://stackoverflow.com/a bakınız/10116452/5112 –

+0

@Tim Bunu unutmuştum. İyi yakalama! – rantanplan

23

toplu için QuerySet eklemek eklemek veya birçok ilişki modellerine birçok yöntemini kaldırmak isterseniz:

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

Ayrıca, sadece publications.article_set.set (qs) 'da kullanabilirsiniz. – citadelgrad