Django Rest Framework
で構築されたAPIを使用しています。私はいくつかのクラスを定義しており、指定されたapi-endpoints
で発生する特定のクエリに適用するフィルタもいくつか作成しました。Django Restフィルタでクエリ結果を制限する方法
私はqueryset
にLIMITを適用しようとしていますが、 ではDjango表記e.xを使用しないことをお勧めします。 Entry.objects.all()[:5]
。代わりに、モデルに関連付けられたフィルタの内側から制限を適用できるようにしたいと考えています。
これまでは解決策が見つかりませんでした。私は、クエリーセットを制限しない結果となるデフォルト値を持つフィルタを定義する方法を見つけるべきだと思っています。要求がエンドポイントに到達し、?filter=10
のようなものを含んでいる場合、クエリーセットは最初の10に限定する必要があります。
設定します!その場合、 'LimitOffsetPagination'クラスをオーバーライドし、' offset'パラメータにデフォルト値(恐らく0)を与えて、ユーザが 'limit'パラメータを指定するだけでよいようにしたいと思います。 私は 'PageNumberPagination'を使用し、' page_size_query_param'パラメータをオーバーライドしてデフォルト値 'limit'を持つことを考えています。それは合理的に聞こえるか? – LetsPlayYahtzee
はい、これは良い解決策です。ドキュメントに記載されているように、パラメタ '' page_size_query_param''を使用して、クライアントがリクエストページサイズを制御できるようにすることができます。 '' PageNumberPagination''では、このパラメータはデフォルトでNoneに設定されています。 –
それはばかげているかもしれませんが、カスタムページネーションクラスをどこに配置するのか分かりません。 – LetsPlayYahtzee