2010-09-06 28 views
11

我正在尝试更改我的树中节点的顺序。一切工作正常,但我想知道是否有一些美丽,简单的方法更新多个领域的实际价值增加1.让我来说明。Django queryset更新字段增加/减少其当前值

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

该代码会在每次SORT_ORDER列的值更改为1,但我想将它更改为类似:

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) 

所以...有没有类似的东西?没有任何东西出现在我的脑海里或者我的屏幕上通过Google搜索。

谢谢halp!

回答

20

您想使用F()对象。

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

the documentation

+0

谢谢!我需要关于Q对象,但完全忘记了F() – realshadow 2010-09-06 14:59:16