簡體   English   中英

如何使用 Django Rest 過濾器限制查詢結果

[英]How to limit query results with Django Rest filters

我正在研究使用Django Rest Framework構建的 api。 我已經定義了幾個model類,我還創建了一些過濾器來應用在指定的api-endpoints中發生的某些查詢。

我想在申請LIMIT queryset ,但我寧願不使用Django的符號前Entry.objects.all()[:5] 相反,我希望能夠從與模型關聯的過濾器內部應用限制。

直到現在我還沒有找到任何解決方案。 我想我應該找到一種方法來定義具有默認值的過濾器,這會導致不限制查詢集,並且如果請求到達端點並包含諸如?filter=10則查詢集應限制為前 10 個.

您可以使用 Django Rest Framework 分頁。 pagination_class LimitOffsetPagination使您能夠限制 query_param 中返回條目的數量。

http://www.django-rest-framework.org/api-guide/pagination/

您可以擴展或自定義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

您應該使用 django-rest 中的分頁 API

http://www.django-rest-framework.org/api-guide/pagination/

查看limit選項

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM