Django中的反向Queryset顺序

Kri*_*ris 4 django django-orm

我想这个问题非常简单而且简短......

有没有简单的方法来反转Django中的查询集的顺序?

例:

li = [1,2,3]

queryset = Collection.objects.filter(pk__in = li)

Jua*_*olf 14

您可以使用

queryset = reversed(Collection.objects.filter(pk__in = li))
Run Code Online (Sandbox Code Playgroud)

要么

queryset = Collection.objects.filter(pk__in = li).reverse()
Run Code Online (Sandbox Code Playgroud)

  • 注意:如果你使用 `reverse()`,查询集的结果可能会改变。在`django==1.11.17`中测试我选择了`list(reversed(qs))` (3认同)
  • 如果没有先使用“order_by()”,则不应使用“reverse()”。否则,您将在无序的 QuerySet 上进行逆向操作,这没有任何意义,并且会提供不一致的结果。 (3认同)

小智 7

反转 qs

queryset = Collection.objects.filter(pk__in = li).order_by('field_name')
Run Code Online (Sandbox Code Playgroud)

如果由于某种原因你不想使用 order_by 然后反向列表

queryset = Collection.objects.filter(pk__in = li)
result = reversed(list(queryset))
Run Code Online (Sandbox Code Playgroud)