Вызов 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)