2008-11-27 24 views
9

Một trong các cuộc gọi API của tôi có thể dẫn đến các bản cập nhật cho một số lượng lớn các đối tượng (các mô hình Django). Tôi đang chạy vào vấn đề hiệu suất với điều này vì tôi đang cập nhật từng hạng mục riêng, lưu và chuyển sang tiếp theo:Các chiến lược để tăng tốc các hoạt động ORM hàng loạt ở Django

for item in Something.objects.filter(x='y'): 
    item.a="something" 
    item.save() 

Đôi khi tiêu chí lọc của tôi trông giống như "trong đó x trong ('a',' b ',' c ', ...) ".

Có vẻ như official answer to this is "won't fix". Tôi tự hỏi những chiến lược mà mọi người đang sử dụng để cải thiện hiệu suất trong những tình huống này.

Trả lời

15

Vé bạn liên kết đến là để tạo số lượng lớn - nếu bạn không dựa vào một ghi đè save phương pháp hoặc trước/sau tiết kiệm tín hiệu để làm bit làm việc trên lưu, QuerySet has an update method mà bạn có thể sử dụng để thực hiện một UPDATE trên các hàng lọc:

Something.objects.filter(x__in=['a', 'b', 'c']).update(a='something') 
+0

Nice, mà có vẻ như nó sẽ giới thiệu rất nhiều trường hợp. Sẽ cung cấp cho một thử. – Parand

+0

Làm việc tuyệt vời, cảm ơn rất nhiều. – Parand

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