Сериализатор django is_valid() возвращает false
Используя django 2.0.2 Python 3.4
MySerializers.py
class MySerializer(BaseSerializer):
UserUID = serializers.CharField()
DeviceUID = serializers.CharField()
SessionId = serializers.CharField()
MyView.py
class MyVeiw(BaseViewSet):
serializer_class = MySerializer
def create(self, request, *args, **kwargs):
serializer_class = MySerializer(data=request.data.dict())
if serializer_class.is_valid():
print(serializer_class.errors)
return Response(0)
else:
return Response(1)
входные данные
{'SessionId': '222a282f-c3f8-46d2-8476-8d4ec627a477', 'UserUID': '62', 'DeviceUI
D': '25'}
serializer_class
return MySerializer(data={'SessionId': '7c5d0530-8e54-42aa-91a0-ce8776c82490', 'Us
erUID': '64', 'DeviceUID': '27'}):
UserUID = CharField()
DeviceUID = CharField()
SessionId = CharField()
serializer_class.initial_data
return {'UserUID': '65', 'DeviceUID': '28', 'SessionId': 'aecef14f-
7f9d-4f01-bc1d-89514 8ab0c05'}
serializer_class.errors
return {}
но is_valid()
всегда false
почему ошибки return empty list
я попытался изменить SessionId UUIDField()
но не работа
а также UserUID
, DeviceUID
+ Изменить IntegerField()
но не работа
я думаю, что этот сериализатор действителен, почему возвращают false
1 ответ
Решение
+ Изменить class MySerializer(BaseSerializer):
в class MySerializer(Serializer):
,
Как сказал Медведь Браун; если вы наследуете от BaseSerialzier
вы должны определить to_internal_value
сам.
По умолчанию, BaseSerializer
поднимает NotImplementedError
:
def to_internal_value(self, data):
raise NotImplementedError('`to_internal_value()` must be implemented.')