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)
私はそれをDjangoページネーションモジュールまでさかのぼりました:https: //github.com/django/django/blob/master/django/core/paginator.py#L100
それは私のクエリセットコードに関連しているようです:
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 / ordersを取得する他のテストがありますが、それらはそれを引き起こしません.... get_querysetの後にDRFは何をしますか?
https://github.com/encode/django-rest-framework/blob/master/rest_framework/pagination.py#L166
ページネーションにトレースバックを入れると、django restフレームワークに関連するものがたくさんありますが、どのクエリが注文警告をトリガーしているかを示すものは何もありません。
-v 2
ほとんどのテストランナーで)