2012-06-01 27 views
21

Tôi đã tự hỏi liệu có tương đương với "thêm tất cả" hoặc "tạo hàng loạt" cho nhiều mối quan hệ làm giảm số lượng truy vấn (tôi sẽ làm điều này cho một danh sách dài)?django 1.4 Hàng loạt nhiều người cần thêm

Các tài liệu về chủ đề này dường như cho thấy rằng điều này là không thể:

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) 

Trả lời

4

Tất nhiên nó có thể! Bạn chỉ cần tạo một số intermediate table và rõ ràng sau đó sử dụng phương thức bulk_create của mô hình này.

+17

Trên thực tế, một bảng trung gian rõ ràng là không cần thiết, xem http://stackoverflow.com/a/10116452/5112 –

+0

@Tim tôi đã quên mất nó. Nắm bắt tốt! – rantanplan

23

Nếu bạn muốn thêm queryset để lớn thêm hoặc loại bỏ cách làm của nhiều đối với nhiều mô hình quan hệ:

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

Bạn cũng có thể sử dụng 'publications.article_set.set (qs)'. – citadelgrad

Các vấn đề liên quan