2010-09-06 2 views
11

Ağacımdaki düğümlerin sırasını değiştirmeye çalışıyorum. Her şey iyi çalışıyor, ancak gerçek değerini 1'e çıkararak birden fazla alanı güncellemenin güzel ve kolay bir yolu olup olmadığını bilmek isterim.Django queryset güncelleştirme alanı geçerli değerini artırıyor/azaltıyor

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

Bu kod 1'e her sıra_düzeni sütun değerini değişecek fakat bunun bir şeyle değiştirmek istiyorum: Böyle bir şey yoktur ...

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) 

Yani? Googling aracılığıyla aklıma veya ekranıma hiçbir şey gelmiyor.

Halp için teşekkürler!

cevap

20

F() nesnelerini kullanmak istersiniz.

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

the documentation

+0

Teşekkür bakın! Q nesneleri hakkında ihtiyacım var, ama tamamen F() hakkında unuttum – realshadow