2009-06-11 20 views
2

Ich benutze Django seit über einem Jahr, aber ich glaube, ich habe einige grundlegende Dinge verpasst. Ich habe ein ziemlich großes Abfrage-Set (mehr als 1000 Objekte) und möchte ein einzelnes Attribut für jedes Objekt in diesem Abfrage-Set ändern. Ist das wirklich der richtige Weg? Ich bin sicher, da ist etwas einfacher?Ändern eines Attributs für jedes Objekt in einem Abfrage-Set

for obj in qs: 
    obj.my_attr = True 
    obj.save() 

Dank

Antwort

14

Sie können die Änderungen in der Masse nur tun, obwohl dies nicht der save() Rückrufe Modell ausgelöst wird:

MyModel.objects.filter(..).update(my_attr=True) 

Dokumentation: Updating multiple objects at once

+0

Ah, ich kann nicht glaube ich habe die 'update' Methode komplett vermisst! Vielen Dank. –

+1

+1 - obwohl ich denke, dass Ihr "kann nicht" in "wird nicht" geändert werden kann, richtig? –

+0

Yup, Entschuldigung, ich schrieb es, bevor ich die Dokumentation fand. :) –

Verwandte Themen