You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django中对两个同优先级字段使用order_by排序

解决方案

你可以通过Django的F()表达式实现基于两个字段之和的排序,具体写法如下:

如果要按rank1与rank2的和降序排列(匹配你给出的示例:10+8=18的对象排在7+6=13的对象之前),使用:

Item.objects.order_by(-F('rank1') - F('rank2'))
# 或者更直观的写法:
Item.objects.order_by((F('rank1') + F('rank2')).desc())

如果需要升序排列(和更小的对象在前),则去掉降序标识:

Item.objects.order_by(F('rank1') + F('rank2'))

说明

  • F()表达式能让数据库直接计算字段值,无需将数据加载到内存后处理,效率更高。
  • 你的示例要求和大的对象优先,因此必须使用降序排序,上述两种降序写法效果一致,可根据习惯选择。

内容的提问来源于stack exchange,提问作者Mohammad AlQudah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 17:31:14