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

rea*_*dow 15 django django-queryset

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

Objtree.objects.select_related().filter(pk__in = ids).update(sort_order = 1)
Run Code Online (Sandbox Code Playgroud)

此代码会将每个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)
Run Code Online (Sandbox Code Playgroud)

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

谢谢你!

Dan*_*man 24

你想使用F()对象.

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

请参阅文档