Actualicé de Django 1.10.4 a 1.11.1 y, de repente, recibo muchos de estos mensajes cuando ejecuto mis pruebas:
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)
Lo rastreé hasta el módulo de paginación de Django: https://github.com/django/django/blob/master/django/core/paginator.py#L100
Parece estar relacionado con mi código de conjunto de consultas:
return get_user_model().objects.filter(id=self.request.user.id)
¿Cómo puedo encontrar más detalles sobre esta advertencia? Parece ser que necesito agregar un order_by(id)
al final de cada filtro, pero parece que no puedo encontrar qué código necesita el order_by agregado (porque la advertencia no devuelve un seguimiento de pila y, por lo tanto, sucede aleatoriamente durante mi prueba correr).
¡Gracias!
Editar:
Entonces, usando @KlausD. consejo de verbosidad, miré una prueba que causaba este error:
response = self.client.get('/api/orders/')
Esto va a OrderViewSet
pero ninguna de las cosas en get_queryset lo causa y nada en la clase de serializador lo causa. Tengo otras pruebas que usan el mismo código para obtener / api / orders y esas no lo causan ... ¿Qué hace DRF después de get_queryset?
https://github.com/encode/django-rest-framework/blob/master/rest_framework/pagination.py#L166
Si pongo un rastreo en la paginación, obtengo un montón de cosas relacionadas con el marco de descanso de django, pero nada que indique cuál de mis consultas está activando la advertencia de orden.
-v 2
en la mayoría de los corredores de pruebas)