ich von Django 1.10.4 bis 1.11.1 aktualisiert und ganz plötzlich ich eine Tonne dieser Nachrichten bekommen, wenn ich meine Tests ausführen:Python Django übriges Rahmen UnorderedObjectListWarning
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 verfolgt dass zurück zum Django Paginierung Modul: https://github.com/django/django/blob/master/django/core/paginator.py#L100
Es scheint mein queryset Code verwandt zu sein:
return get_user_model().objects.filter(id=self.request.user.id)
Wie kann ich weitere Informationen über t finden seine Warnung? Es scheint so zu sein, dass ich am Ende jedes Filters einen order_by(id)
hinzufügen muss, aber ich kann nicht scheinen, welcher Code den order_by hinzugefügt hat (weil die Warnung keinen Stack - Trace zurückgibt und so geschieht es zufällig während meiner Testlauf).
Danke!
Edit:
So von @KlausD verwenden. Ausführlichkeit Spitze, sah ich einen Test verursacht diesen Fehler:
response = self.client.get('/api/orders/')
Dies geht zu OrderViewSet
aber keiner der Dinge in get_queryset weil es nichts in Serializer Klasse verursacht es. Ich habe andere Tests, die den gleichen Code verwenden, um/api/orders zu bekommen, und diese verursachen es nicht .... Was macht DRF nach get_queryset?
https://github.com/encode/django-rest-framework/blob/master/rest_framework/pagination.py#L166
Wenn ich eine Rückverfolgung in Paginierung setzen dann bekomme ich eine ganze Reihe von Sachen im Zusammenhang Rest Rahmen aber nichts django, die die Reihenfolge Warnung, welche meiner Anfragen zurückweist auslöst.
Normalerweise sollte es sein leicht zu finden durch den Namen des Tests, der die Warnung verursacht. Vielleicht möchten Sie Tests mit Ausführlichkeit durchführen ('-v 2' auf den meisten Testläufern) –
Danke @KlausD. Das ist eine hilfreiche Erinnerung. –
Sucht nach Abfragen, wo Sie eine '' 'Offset'' und' 'Limit''', aber keine' '' 'order_by''' – gipsy