我從Django的1.10.4升級到1.11.1,突然我得到一噸的這些消息的時候我跑我的測試:Python的Django的REST框架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)
我追查這回的Django分頁模塊: https://github.com/django/django/blob/master/django/core/paginator.py#L100
這似乎與我的查詢集代碼:我如何才能找到對T的詳細信息
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 /命令,這些測試不會導致它....在get_queryset之後DRF做了什麼?
https://github.com/encode/django-rest-framework/blob/master/rest_framework/pagination.py#L166
如果我把一個回溯到分頁然後我得到了一大堆給Django的REST框架,但沒有回指向哪個我詢問的觸發順序警告相關的東西。
通常應該通過引起警告的測試名稱很容易找到。您可能想要運行詳細測試(大多數測試跑步者使用'-v 2') –
謝謝@KlausD。這是一個有用的提醒。 –
尋找你正在做''''offset'''和'''limit'''但沒有''order_by'''的查詢 – gipsy