2008-11-27 7 views
9

Einer meiner API-Aufrufe kann zu Updates für eine große Anzahl von Objekten (Django-Modelle) führen. Ich laufe in Performance-Probleme mit diesem, da ich jedes Element einzeln zu aktualisieren, Speichern und Bewegen auf die nächste:Strategien zum Beschleunigen von Batch-ORM-Operationen in Django

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

Manchmal sieht mein Filterkriterium wie „wo x in (‚a‘,‘ b ',' c ', ...) ".

Es scheint die official answer to this is "won't fix". Ich frage mich, welche Strategien die Leute verwenden, um die Leistung in diesen Szenarien zu verbessern.

Antwort

15

Das Ticket Sie für Massen Schöpfung verbunden ist - wenn Sie setzen nicht auf eine außer Kraft gesetzt save Verfahren oder Pre/Post-Signale speichern Bits zu tun arbeiten speichern, QuerySet has an update method, die Sie verwenden können, ein UPDATE auf den gefilterten Zeilen auszuführen:

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

Nizza, das aussieht wie es eine Menge von Fällen würde decken. Werde das versuchen. – Parand

+0

Hat super funktioniert, vielen Dank. – Parand

Verwandte Themen