Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django中的反向Queryset顺序_Django_Django Orm - Fatal编程技术网

Django中的反向Queryset顺序

Django中的反向Queryset顺序,django,django-orm,Django,Django Orm,在Django中,有没有简单的方法来反转查询集的顺序 例如: li=[1,2,3] queryset=Collection.objects.filter(pk\uu in=li) 以反转qs queryset = Collection.objects.filter(pk__in = li).order_by('field_name') 如果出于某种原因,您不想使用order_,那么请反转列表 queryset = Collection.objects.filter(pk__in = li) r

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

例如:

li=[1,2,3]
queryset=Collection.objects.filter(pk\uu in=li)
以反转qs

queryset = Collection.objects.filter(pk__in = li).order_by('field_name')
如果出于某种原因,您不想使用order_,那么请反转列表

queryset = Collection.objects.filter(pk__in = li)
result = reversed(list(queryset))
你可以用

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


如何使用
order\u by()
?如何翻转已生成的查询集?我不是真的点什么菜。按(-)排序会起作用吗?它是按某种顺序排列的,即使您没有在查询中指定它。它可能是在模型中指定的,或者只是由pk作为默认值。我想,在默认情况下,您可以按(-pk)订购。如果查询集不是太大,您可以在Python内存中通过将其强制转换为列表并执行
[:-1]
切片或使用
反向
@Two-bitalchest来完成它。默认情况下,它肯定不是按
pk
排序的。除非以某种方式指定了顺序,否则查询集是无序的,即没有任何保证的任意顺序。@Two Bitalchest他们通常看起来是在pk上排序的。确切的顺序取决于许多因素,最重要的是顺序行是物理存储在磁盘上的。如果您只插入带有序列主键的行,则结果集的顺序可能相同,但这不是您可以依赖的假设。我明白这不是你的主要观点,但这是一个重要的区别,也是一个非常常见的误解。是否需要重新加载服务器才能进行更改?@ramisanjumaditi服务器会在您进行任何更改时自动重新加载。注意:如果使用
reverse()
查询集的结果可能会更改。在
django==1.11.17中测试
我选择了
list(reversed(qs))
reverse()
如果没有先使用
order\u by()
,就不能使用。否则,您将在无序的QuerySet上进行反转,这没有任何意义,并且将提供不一致的结果
queryset = Collection.objects.filter(pk__in = li).reverse()