Ich habe ein Upgrade von Django 1.10.4 auf 1.11.1 durchgeführt und plötzlich erhalte ich eine Menge dieser Meldungen, wenn ich meine Tests durchführe:
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)
Ich habe das auf das Django-Paginierungsmodul zurückgeführt: https://github.com/django/django/blob/master/django/core/paginator.py#L100
Es scheint mit meinem Queryset-Code zu tun zu haben:
return get_user_model().objects.filter(id=self.request.user.id)
Wie finde ich weitere Details zu dieser Warnung? Es scheint, dass ich order_by(id)
am Ende jedes Filters ein hinzufügen muss, aber ich kann anscheinend nicht finden, welcher Code das Hinzufügen von order_by benötigt (da die Warnung keinen Stack-Trace zurückgibt und dies während meines Tests zufällig geschieht Lauf).
Vielen Dank!
Bearbeiten:
Also mit @KlausD. Tipp zur Ausführlichkeit: Ich habe mir einen Test angesehen, der diesen Fehler verursacht hat:
response = self.client.get('/api/orders/')
Dies geht an, OrderViewSet
aber keines der Dinge in get_queryset verursacht es und nichts in der Serializer-Klasse verursacht es. Ich habe andere Tests, die denselben Code verwenden, um / api / orders abzurufen, und diese verursachen ihn nicht .... Was macht DRF nach get_queryset?
https://github.com/encode/django-rest-framework/blob/master/rest_framework/pagination.py#L166
Wenn ich einen Traceback in die Paginierung einbaue, erhalte ich eine ganze Reihe von Informationen zum Django-Rest-Framework, aber nichts, was darauf hindeutet, welche meiner Abfragen die Bestellwarnung auslöst.
-v 2
bei den meisten Testläufern)