[英]Serializer validated_data is empty even when is_valid is True
Following code returning an empty json.以下代码返回一个空的 json。
def create_account(request):
serializer = UserSerializer(data={'name': request.GET.get('name'), 'surname': request.GET.get('surname'),
'password': request.GET.get('password'), 'email': request.GET.get('email')})
if not serializer.is_valid():
return HttpResponse(status=401,content=serializer.errors)
serializer.save()
return Response(serializer.data)
And this is my serializer这是我的序列化程序
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('name', 'surname', 'password', 'email')
def create(self, validated_data):
return User.objects.create(**validated_data)
When i send a request, serializer.initial_data
is filled correctly.当我发送请求时,
serializer.initial_data
已正确填写。 is_valid
is returning True
but validated_data
is empty. is_valid
返回True
但validated_data
为空。
It doesn't look like you're using a custom User model and django.contrib.auth.models.User doesn't have the name and surname fields. 它看起来不像您使用的是自定义用户模型,而django.contrib.auth.models.User没有名称和姓氏字段。 It does however have first_name and last_name.
但它确实有first_name和last_name。 Try using those as fields in your serializer instead since they are model fields.
尝试将它们用作序列化程序中的字段,因为它们是模型字段。 Otherwise you'll have to override to_internal_value as this answer suggests.
否则你将不得不覆盖to_internal_value,因为这个答案暗示。
Unable to get a non-model field in the validated_data of a Django Rest Framework serializer 无法在Django Rest Framework序列化程序的validated_data中获取非模型字段
I had the same problem and I used serializers.Serializer
instead of serializers.ModelSerializer
after I changed it to ModelSerializer
, it solved.我遇到了同样的问题,在将其更改为
ModelSerializer
后,我使用了serializers.Serializer
而不是serializers.ModelSerializer
,它解决了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.