Я перейшов з 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)
Я простежив це до модуля Pagination Django: https://github.com/django/django/blob/master/django/core/paginator.py#L100
Здається, це пов’язано з моїм кодом набору запитів:
return get_user_model().objects.filter(id=self.request.user.id)
Як я можу знайти докладнішу інформацію про це попередження? Здається, мені потрібно додати a order_by(id)
в кінці кожного фільтра, але я, здається, не можу знайти, який код потребує доданого order_by (оскільки попередження не повертає трасування стека, і це трапляється випадково під час мого тесту бігати).
Дякую!
Редагувати:
Отже, за допомогою @KlausD. підказка, я подивився тест, який спричинив цю помилку:
response = self.client.get('/api/orders/')
Це стосується, OrderViewSet
але жодна з речей у get_queryset не спричиняє цього, і ніщо в класі серіалізатора не викликає. У мене є інші тести, які використовують той самий код для отримання / api / замовлення, і ті не викликають його .... Що робить DRF після get_queryset?
https://github.com/encode/django-rest-framework/blob/master/rest_framework/pagination.py#L166
Якщо я вкладаю трасування назад у пагінацію, то я отримую цілу купу речей, пов’язаних з django rest framework, але нічого, що вказує на те, який із моїх запитів ініціює попередження про замовлення.
-v 2
на більшості бігунів)