2010-09-06 3 views
11

J'essaye de changer l'ordre des nœuds dans mon arbre. Tout fonctionne bien, mais j'aimerais savoir s'il existe une façon simple et efficace de mettre à jour plusieurs champs en augmentant sa valeur réelle de 1. Laissez-moi illustrer.Champ de mise à jour du queryset de Django augmentant/diminuant sa valeur actuelle

Objtree.objects.select_related().filter(pk__in = ids).update(sort_order = 1) 

Ce code change à chaque valeur de la colonne sort_order à 1, mais je voudrais changer quelque chose comme:

Objtree.objects.select_related().filter(pk__in = ids).update(sort_order += 1) 
# or 
Objtree.objects.select_related().filter(pk__in = ids).update(self.sort_order = 1) 

Alors ... est-il quelque chose comme ça? Rien ne vient à mon esprit ou mon écran via Google.

Merci pour halp!

Répondre

20

Vous souhaitez utiliser F() objets.

from django.db.models import F 
Objtree.objects.filter(pk__in=ids).update(sort_order=F('sort_order')+1) 

Voir the documentation

+0

Merci! J'ai besoin de Q objets, mais j'ai complètement oublié F() – realshadow

Questions connexes