Tabulator и Django Rest Framwork - ошибка при удаленной пагинации

У меня возникли некоторые проблемы с выяснением того, как использовать Tabulator 4.9 и DRF 3.1.2 для работы друг с другом с помощью пагинации. Все работает нормально, пока я не использую настройку page size в Tabulator, которая

Я использовал простой DRF GenericViewSet с ListModelMixin и RetrieveModelMixin:

class ProductViewSet(RetrieveModelMixin, ListModelMixin, GenericViewSet):
    serializer_class = ProductSerializer
    lookup_field = "number"

    def get_queryset(self):
        try:
            return Product.objects.all()
        except:
            return None

    def retrieve(self, request, serial = None):
        try:
            query = Product.objects.filter(serial = serial)
            results = ProductSerializer(data = query, many = True)
            results.is_valid()
            return Response(data = results.data, status = status.HTTP_200_OK)
        except Exception as E:
            return Response(data = f"""{E}""", status = status.HTTP_400_BAD_REQUEST)

Я также определил paginaton.py в основной папке проекта:

from rest_framework import pagination

class PageNumberPaginationWithCount(pagination.PageNumberPagination):
    def get_paginated_response(self, data):
        response = super(PageNumberPaginationWithCount, self).get_paginated_response(data)
        response.data['last_page'] = self.page.paginator.num_pages
        return response

и добавил его в settings.py:

REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': (
        'rest_framework.renderers.JSONRenderer',
        'rest_framework.renderers.BrowsableAPIRenderer',
    ),
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.SessionAuthentication',
    ],
    'DEFAULT_PAGINATION_CLASS': 'sstester3.pagination.PageNumberPaginationWithCount',
    'PAGE_SIZE': 25
}

В js для таблицы я использовал пагинацию для удаленной настройки:

let cols = [{title: "number", field: "number"},
            {title: "name", field: "name"}]

var table = new Tabulator("#producttable", {
    layout: "fitColumns",
    pagination: "remote",
    paginationSize: 25,
    paginationSizeSelector: [50, 100],
    ajaxURL: "api/products",
    paginationDataReceived: {"data": "results"},
    columns: cols
});

При загрузке и переходе со страницы на страницу все в порядке. Я думаю, это потому, что PAGE_SIZE и paginationSize установлены на 25. Если я использую на сайте настройку 50, то на всех 20 из n-1 страниц я вижу только n элементы с некоторым белым пространством внизу. Только nя страница имеет 25 элементов.

Вернуться на верх