Django queryset update字段增加/减少其当前值

时间:2010-09-06 14:47:58

标签: django django-queryset

我正在尝试更改树中节点的顺序。一切正常,但我想知道是否有一些美丽,简单的方法来更新多个字段,方法是将其实际值增加1.让我说明一下。

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)

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

感谢halp!

1 个答案:

答案 0 :(得分:22)

您想使用F()个对象。

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

请参阅the documentation