2008-11-27 22 views
9

API çağrılarımdan biri çok sayıda nesneye (Django modelleri) yönelik güncellemelerle sonuçlanabilir. Ben tek tek her öğenin güncellenmesinin ediyorum çünkü bu performans sorunları çalışan tasarrufu ve bir sonrakine geçmeden ediyorum:Django'da toplu ORM işlemlerini hızlandırma stratejileri

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

Bazen filtre kriter nerede ('a' x'" gibi görünüyor M.Ö',...)".

official answer to this is "won't fix" görünüyor. İnsanların bu senaryolarda performansı geliştirmek için kullandıkları stratejileri merak ediyorum.

cevap

15

sen bağlantılı bilet toplu yaratılması içindir - Bir geçersiz save yöntemine dayanarak değiliz ya öncesi/sonrası bit yapmak sinyalleri kaydetmek eğer o çok davada ele alacağız gibi görünüyor,

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

Güzel: filtrelenen satırda bir UPDATE gerçekleştirmek için kullanabileceğiniz QuerySet has an update method kaydetmek çalışır. Bunu deneyecek. – Parand

+0

Çok çalıştı, çok teşekkürler. – Parand