Вызов is-valid, когда пагинация применяется к данным в DRF

У меня есть ModelViewSet и я использую ModelSerializer. Я также использую Pagination, который находится в django.core.

Мой фрагмент кода представления, который работает:

page_number = request.data.get("page")
data = Model.objects.filter()
paginator = Paginator(data, 100)
page = paginator.page(int(page_number))
serializer = self.serializer_class(page, many=True)
list_data = serializer.data

Что я хочу сделать, так это validate данные. То есть сделать:

if serializer.is_valid(raise_exception=True):
    list_data = serializer.validated_data

Но я получаю ошибку, если пытаюсь выполнить приведенный выше код.

Ошибка:

"Expected a list of items but got type \"Page\"."

Как я могу отправить данные в is_valid в этом случае?

Классы сериализатора принимают Model или QuerySet объекты, Page объект имеет object_list атрибут, который содержит кверисет объектов модели, поэтому необходимо передать page.object_list:

data = Model.objects.filter()
paginator = Paginator(data, 100)
page = paginator.page(int(page_number))
serializer = self.serializer_class(page.object_list, many=True)
serializer.is_valid(raise_exception=True)
Вернуться на верх