我正在尝试以特定方式订购查询集,但不知道该怎么做。
首先,我希望它按降序排序end_date- 首先将任何空end_date记录分组。
然后列表应该按primary字段排序,然后是降序amount。
queryset = MyModel.exclude_denied.filter(user=user).order_by(
"end_date", "primary", "-amount"
)
这是我目前拥有的,但它并没有像我想要的那样返回它。
我希望这些组看起来像这样:
没有的项目end_date
primary首先列出的项目,然后按 desc 排序amount
项目与end_date
primary首先列出的项目,然后按 desc 排序amount
我正在尝试实现这样的查询集:
ItemA - end_date:None - primary:True
ItemB - end_date:None - primary:False
ItemC - end_date:None - primary:False
ItemD - end_date:08/10/2018 - primary:True
ItemE - end_date:07/10/2019 - Primary:False
ItemF - end_date:06/08/2018 - Primary:False
ItemG - end_date:04/16/2017 - Primary:False
是否尝试仅使用order_by适当的方法创建此订单?我觉得它很近 - 但不完全在那里。
我认为更好的方法是创建 2 个查询集,然后将它们合并在一起以保持它们的顺序。
像这样的东西:
Queryset1 = 没有的项目end_date,降序primary,然后降序amount
Queryset2 = 具有end_date(desc)、降序primary、降序的项目amount
合并两个 Queryset,但首先按顺序列出 Queryset1 项,然后列出 Queryset2 项。
我不确定实现这一目标的最佳方法,但我认为这将是最好的解决方案。
我正在寻找有关如何完成此任务的建议。
阿晨1998
相关分类