Skip to content

Сериализаторы

Как посмотреть поля сериализатора?

ser = AnySerializer()
ser.fields()

Как модифицировать тело запроса перед запуском валидации?

Написать кастомный Parser:

from django.core.handlers.wsgi import WSGIRequest
from rest_framework.parsers import JSONParser


class AnyParser(JSONParser):
    def parse(self, stream: WSGIRequest, media_type=None, parser_context=None):
        data: dict = super().parse(stream, media_type, parser_context)
        return {
            **data,
            # Для примера добавим в Request.data еще и user.pk из request.user
            'user': stream.user.pk,
        }


...

from rest_framework.viewsets import ModelViewSet


class AnyViewSet(
    ModelViewSet,
):
    serializer_class = ...
    parser_classes = (AnyParser,)
    queryset = ...

Теперь при валидации в request.data будет лежать user