Я обновился с 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 Pagination: 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 / orders, но не вызывают этого .... Что делает DRF после get_queryset?
https://github.com/encode/django-rest-framework/blob/master/rest_framework/pagination.py#L166
Если я помещаю трассировку в разбиение на страницы, я получаю целую кучу вещей, связанных с фреймворком django rest, но ничего, что указывает на то, какой из моих запросов вызывает предупреждение о порядке.
-v 2