首页 > 解决方案 > Django 查询集 order_by 绝对值

问题描述

我有一个具有description属性和balance属性的查询集。目前,当我生成查询集时,它是从最小到最大排序的——

Model.objects.order_by('balance')

#output

Thing1          -120000
Thing2             -300
Thing3             7000
Thing4           100000

我想订购的是递减绝对值,结果是:

#Desired Output

Thing1          -120000
Thing4           100000
Thing3             7000
Thing2             -300

我尝试在内部传递各种方法,order_by()但我认为它需要是一个 SQL 类型的参数 - 我无法弄清楚。我发现这个func expression在注释时使用了。我无法让它与 the 一起使用,order_by并且文档没有太大帮助。

有没有办法以这种方式订购查询集?

标签: pythondjangopython-3.x

解决方案


您可以注释绝对值并按注释值排序。您可以使用-符号表示降序:

from django.db.models import Func, F

Model.objects.annotate(abs_balance=Func(F('balance'), function='ABS')).order_by('-abs_balance')

推荐阅读