连接两个Django查询集时避免自动排序

时间:2018-02-20 23:25:38

标签: python django

我正在尝试在Django中返回一个查询集,以便为它创建一个视图列表。将ID从1到n索引的模型的条目(id与创建日期时间相关,但不要太依赖于此),我的目标是显示第一个在结果列表中作为第一个输入,但是反向排序列表的其余部分 - 从最近的,即具有最高id编号到最低编号(因此id = 2应该是最后一个)。现在我有这样的事情:

class ModelLC(generics.ListCreateAPIView):
  queryset = Model.objects.filter(id=1)
  aux_queryset = Model.objects.exclude(id=1).order_by('-created')
  queryset = queryset | aux_queryset

  serializer_class = ModelSerializer

  def perform_create(self, serializer):
    serializer.save(owner=self.request.user)


id 是索引列,创建是具有创建时间戳的日期时间字段。)
在一起加入查询后,结果继承了排序顺序,无论我如何重写它,查询在实际执行时看起来都是一样的,结果按创建时间按相反的顺序排序,这使得id也从最高到最低。是否可以强制查询结果粘合在一起"以这种奇怪的方式,但同时

1 个答案:

答案 0 :(得分:1)

当您将查询集与you get `015400` so by adding greens the RED increased .... WRONG 运算符连接在一起时,ORM将从中查询一个查询。这就是为什么它总是按|排序。

当您使用DRF时,您无法使用created DESC,但看起来有一种使用chain()来解决问题的黑客方法

extra()

请参阅https://stackoverflow.com/a/30685813/7933618