0

最近、私は drf ページネーション クラス、PageNumberPagination を使用していました。奇妙なバグに遭遇した可能性があります。公式ドキュメントでは、PageNumberPagination のページ サイズをオーバーライドするには、以下に示すように、ページ サイズの構成をオーバーライドするカスタム ページネータを作成する必要があります。

class StandardResultsSetPagination(PageNumberPagination):
    page_size = 100
    page_size_query_param = 'page_size'
    max_page_size = 1000
class BillingRecordsView(generics.ListAPIView):
    queryset = Billing.objects.all()
    serializer_class = BillingRecordsSerializer
    pagination_class = LargeResultsSetPagination

しかし、私が同じことをしようとしたとき、カスタムページネーターはデフォルト設定を 100 として使用していました。これが私が使用した私のスニペットです

class StandardResultsSetPagination(PageNumberPagination):
    page_size = 10
    page_size_query_param = 'page_size'
    max_page_size = 100

class TrendingClassesView(ListAPIView):
    pagination_class = StandardResultsSetPagination
    serializer_class = BaseClassTileSerializer
    queryset = BaseClass.objects.all()

ある瞬間、コードは正常に動作しましたが、ページサイズをしばらくいじった後、ページネーターが機能しなくなったので、ページサイズを機能させるために以下のようなことをしなければなりません

class StandardResultsSetPagination(PageNumberPagination):
    page_size = 10
    page_size_query_param = 'page_size'
    max_page_size = 100

    def get_page_size(self, request):
        return 10

これは私の残りのフレームワーク設定です

REST_FRAMEWORK = {
    'UPLOADED_FILES_USE_URL':
    True,
    'DEFAULT_PARSER_CLASSES': [
        'rest_framework.parsers.JSONParser',
        'rest_framework.parsers.MultiPartParser',
        'rest_framework.parsers.FileUploadParser',
        'rest_framework.parsers.FormParser',
    ],
    "TIME_FORMAT":
    "%I:%M %p",
    "TIME_INPUT_FORMATS": ["%I:%M %p", "%H:%M"],
}

私は何か間違ったことをしているかもしれないと思いますが、間違いを見つけることができません。

4

2 に答える 2