python - 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
并且文档没有太大帮助。
有没有办法以这种方式订购查询集?
解决方案
您可以注释绝对值并按注释值排序。您可以使用-
符号表示降序:
from django.db.models import Func, F
Model.objects.annotate(abs_balance=Func(F('balance'), function='ABS')).order_by('-abs_balance')
推荐阅读
- java - 如何在android中对api响应进行分组
- php - 如何修复 PHP 嵌套循环我在尝试创建嵌套循环时遇到了一些问题?
- google-bigquery - Google Big query ML ARIMA 预测不正确
- google-api - Google Slides API-如何更改某种颜色的所有形状的文本颜色
- rust - 计算着色器破坏顶点缓冲区
- javascript - 未捕获的 ReferenceError:lsj_C4msOic 未在 HTMLButtonElement.onclick 中定义
- django - Django - 我在更新对象时收到“此字段是必需的”错误
- javascript - 如何从jquery中的ID中删除一个单词?
- reactjs - 如何针对点击事件定位特定按钮
- julia - 如何解决 julia 表达式中变量的范围?