2017-02-17 13 views
0

documentationによれば、GenericAPIViewを継承するクラスを使用する場合は、ページネーションを有効にするために特別なことは必要ありません。PageNumberページングと固定次数のないクエリセット

私はdjangoとdjango restフレームワークのコードを見てきました。ViewSet querysetは発注されていないようです。ページ番号付けでは、のSQLキーワードLIMITOFFSETがクエリに追加されます。

私が理解していないことは、決定論的順序を持たないクエリセットをどのように処理するかです。なぜドキュメンテーションがビューセットクエリーセットの最後に.order_by()ステートメントを追加すると言っていないのですか?

+0

多くのデータベースではクエリ間で一貫した順序がありますが、不幸にもポストグルではそうではなく、テーブルを更新すると順序が変わる傾向があります。 –

+0

その場合は、 'PageNumberPagination'を使用するときにviewsetクエリセットを順序付けする必要があるということは一度も言及されていないため、これは大きな欠陥です。さらに、「CursorPagination」を使用すると、DRFによってクエリーセットで注文が強制されます。 –

+0

https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/pagination.py#L467 –

答えて

0

明示的な順序のないクエリは、データベース固有のものでなければなりません。ソートされた結果セットが得られるという保証はありません。(djangoがidでデフォルトでソートしない限り)同様の答えはhereを参照してください。

+0

私はあなたに同意する、これは私がそれを強制する必要はありません驚いている理由ですこのタイプのページネーションを使用するときは、クエリセット上で 'order_by'を使います。 –

関連する問題