如何基于两个字段对不同模型的QuerySet进行排序?
实现多字段联合排序的方案
你只需要修改sorted函数的key参数,返回一个包含两个排序字段的元组即可。Python的sorted函数会先按元组的第一个元素排序,当第一个元素相同时,自动按第二个元素排序,完全匹配你的需求。
修改后的代码如下:
lst_qs = list(qs_trades) + list(qs_deposits) + list(qs_withdrawals) sorted_lst = sorted(lst_qs, key=lambda x: (x.datetime, x.dt_created))
补充说明
- 如果需要倒序排序,可针对日期字段的时间戳加负号实现(日期类型支持此操作),比如先按
datetime倒序,再按dt_created倒序:
若使用sorted_lst = sorted(lst_qs, key=lambda x: (-x.datetime.timestamp(), -x.dt_created.timestamp()))reverse=True参数会对两个字段统一倒序,如需混合正倒序,优先用元组加负号的方式更灵活。 - 确保所有模型的
datetime和dt_created字段类型一致(均为datetime对象),避免排序时出现类型错误。
内容的提问来源于stack exchange,提问作者Florent
相关产品推荐
相关产品推荐

