我从Django 1.10.4升级到1.11.1,当我运行测试时突然收到大量这样的消息:
lib/python3.5/site-packages/rest_framework/pagination.py:208:
UnorderedObjectListWarning:
Pagination may yield inconsistent results with an unordered object_list:
<QuerySet [<Group: Requester>]>
paginator = self.django_paginator_class(queryset, page_size)
我已经将其追溯到Django分页模块:https://github.com/django/django/blob/master/django/core/paginator.py#L100
它似乎与我的查询集代码有关:
return get_user_model().objects.filter(id=self.request.user.id)
如何找到有关此警告的更多详细信息?似乎我需要在每个过滤器的末尾添加一个order_by(id)
,但我似乎找不到哪些代码需要添加order_by (因为警告不返回堆栈跟踪,所以它在我的测试运行期间随机发生)。
谢谢!
编辑:
所以通过使用@KlausD。详细提示,我查看了导致此错误的测试:
response = self.client.get('/api/orders/')
这将转到OrderViewSet
,但get_queryset中的任何东西都不会导致它,序列化程序类中也没有任何东西会导致它。我还有其他一些测试,它们使用相同的代码来获取/api/order,但这些测试并不会导致它……在get_queryset之后,DRF做了什么?
https://github.com/encode/django-rest-framework/blob/master/rest_framework/pagination.py#L166
如果我将回溯放到分页中,那么我会得到一大堆与django rest框架相关的东西,但没有任何东西指向我的哪个查询触发了订单警告。
https://stackoverflow.com/questions/44033670
复制相似问题