私は_Django Rest Framework
_で構築されたAPIに取り組んでいます。いくつかのmodel
クラスを定義し、指定された_api-endpoints
_で発生する特定のクエリに適用するフィルターもいくつか作成しました。
queryset
にLIMITを適用しようとしていますが、Django notation ex Entry.objects.all()[:5]
を使用したくないのですが、代わりに次のことができるようにしたいと思います。モデルに関連付けられたフィルターの内側から制限を適用します。
今まで私は解決策を見つけていません。クエリセットを制限しない結果となるデフォルト値でフィルターを定義する方法を見つける必要があると考えています。リクエストがエンドポイントに到達し、_?filter=10
_のようなものが含まれている場合、クエリセットは最初の値に制限する必要があります10.10。
Django RestFrameworkページングを使用できます。pagination_classLimitOffsetPagination
を使用すると、query_paramで返されるエントリの数を制限できます。
django-restのページネーションAPIを使用する必要があります
http://www.Django-rest-framework.org/api-guide/pagination/
limit
オプションを見てください
drf で利用可能なページネーションクラスを拡張またはカスタマイズできます
class UserSpecificPagination(LimitOffsetPagination):
def get_limit(self, request):
if logic_met(request.user):
self.max_limit = custom_limit
return super(UserSpecificPagination, self).get_limit(request)
listapiview
またはDRF設定でクラスをpagination_class
として設定します