Как получить доступ к значению поля перед сериализацией в моем сериализаторе (serializers.Serializer
) или в режиме покоя (UpdateAPIView
)?
У меня есть что-то вроде этого:
class MySerializer(serializers.Serializer):
my_field = serializers.IntegerField()
Если Я пытаюсь заполнить свое поле строкой 'test', оно немедленно вызовет ошибку ValidationError, сообщающую мне о неправильном типе данных (конечно, ожидая целое число). До появления этой ошибки я хочу зафиксировать значение и что-то с ним сделать, но понятия не имею, как и где я могу получить к нему доступ. У него везде пустое строковое значение. Я пытался получить его в is_valid()
перед вызовом super()
или с помощью raise_exception=False
, но все еще не вижу его:
'_kwargs': {'context': {'format': None,
'request': <rest_framework.request.Request object>,
'view': <rest.views.MyUpdateAPIView object>},
'data': <QueryDict: {'my_field': ['']}>,
'initial_data': <QueryDict: {'my_field': ['']}>,
Когда я пытаюсь найти его в своем представлении, я также вижу ничего:
serializer.initial_data
<QueryDict: {'my_field': ['']}>
request.data
<QueryDict: {'my_field': ['']}>
Когда я пытаюсь проверить методы validate()
или validate_my_field()
, я даже не могу попасть туда из-за ошибки ValidationError, о которой я упоминал выше.
Как на самом деле выполняется проверка сериализатора работает? Каков порядок в нем и как я могу получить доступ к данным до их «очистки»?