2

根据文档,在使用继承自的类时启用分页没有什么特别的要求GenericAPIView

我查看了 django 和 django rest 框架的代码,并且ViewSet 查询集似乎没有排序。分页仅将SQL关键字LIMIT和添加OFFSET到查询中。

我不明白的是如何处理没有确定顺序的查询集?为什么文档没有说在ViewSet 查询集.order_by()的末尾添加一条语句?

4

2 回答 2

0

需要排序才能使分页正常工作。没有它,您可以在不同的页面上重复几行并且很少丢失。django 文档中也提到了它:

为了一致的分页,QuerySet 应该被排序,例如使用 order_by() 子句或模型上的默认排序。

https://docs.djangoproject.com/en/2.2/topics/pagination/#required-arguments

这篇关于默认排序的文章也值得阅读:https ://docs.microsoft.com/pl-pl/archive/blogs/conor_cunningham_msft/no-seatbelt-expecting-order-without-order-by

于 2020-08-11T11:23:43.613 回答
0

没有明确顺序的查询应该是特定于数据库的,并且不能保证您将获得排序的结果集(除非 django 默认按 id 排序),请参阅此处以获得类似的答案。

于 2017-02-17T20:16:14.363 回答