亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Django Rest Framework 中設置自定義分頁?

如何在 Django Rest Framework 中設置自定義分頁?

莫回無 2023-12-12 10:21:57
我正在嘗試為我的 API 端點設置自定義分頁,如果 URL 中有過濾器,Django 必須返回特定數量的記錄,如果沒有任何過濾器,則必須返回另一數量的記錄。我有以下代碼:valid_filters = {'Name', 'Date'}def _has_valid_filters(iterable):    return not valid_filters.isdisjoint(iterable)class MyPagination(LimitOffsetPagination):    def get_page_size(self, request):        if _has_valid_filters(request.query_params.items()):            return 15        else:            return 30class MyView(viewsets.ModelViewSet):    pagination_class = MyPagination    http_method_names = ['get']    serializer_class = My_Serializer        def get_queryset(self):        valid_filters = {            'Name': 'Name',            'Date': 'Date__gte',        }        filters = {valid_filters[key]: value for key, value in self.request.query_params.items() if key in valid_filters.keys()}        queryset = Model.objects.filter(**filters)        return queryset這段代碼的問題是分頁總是相同的。雖然MyPagination被調用,但看起來get_page_size由于某種原因從未被調用。誰能幫我解決這個問題嗎?
查看完整描述

1 回答

?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

我不認為LimitOffsetPagination有一個已命名的方法get_page_size,因此它永遠不會被調用。我相信你想要的就是get_limit()。

也就是說,我認為以這種方式模糊頁面限制有點不穩定,我相信這應該由客戶端提供的查詢參數來控制。


查看完整回答
反對 回復 2023-12-12
  • 1 回答
  • 0 關注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號