2009-06-11 7 views
2

J'utilise Django depuis plus d'un an, mais je pense que j'ai manqué quelque chose de fondamental. J'ai un assez gros queryset (plus de 1000 objets) et j'aimerais changer un seul attribut pour chacun des objets de ce jeu de requête. Est-ce vraiment le chemin à parcourir? Je suis sûr qu'il y a quelque chose de plus simple?Modifier un attribut pour chaque objet dans un ensemble de requête

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

Merci

Répondre

14

Vous pouvez juste faire les changements en vrac, bien que cela ne se déclenche pas l'save() callbacks Modèle:

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

Documentation: Updating multiple objects at once

+0

Ah, je ne peux pas crois que j'ai complètement raté la méthode 'mise à jour'! Merci. –

+1

+1 - bien que je pense que votre "ne peut pas" peut être changé en "ne sera pas", non? –

+0

Yup, désolé, je l'ai écrit avant de trouver la documentation. :) –

Questions connexes