Django查询设置复杂顺序-联合销毁顺序

我是Python和Django的新手。我有项目清单。每个项目都有2个字段:start_dateupdate_date
我试图按以下顺序查询项目:

  1. 如果今天是开始日期>,则按start_date进行排序,然后按update_date进行排序
  2. 其他(开始日期update_date和start_date排序

我最终得到以下查询:

today = date.today()
all = m.items.objects.annotate(updated_at_date=TruncDate('updated_date'))
upcoming = all.filter(start__gte=today).order_by('start_date','-updated_date')
started = all.filter(start__lt=today).order_by('-updated_date','start_date')
queryset = upcoming.union(started)

但是当我打印结果时,我以不同的顺序得到它。但是,如果我只返回upcoming或仅返回started,我将得到很好的排序。

我认为联盟破坏了我的命令。我的查询有什么问题?我该如何解决?

hyswsh 回答:Django查询设置复杂顺序-联合销毁顺序

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3097113.html

大家都在问