简体   繁体   English

即使 is_valid 为 True,Serializer validated_data 也是空的

[英]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返回Truevalidated_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.

相关问题 Serializer is_valid 且没有错误,但 validated_data 为空(第三方 API 和 DRF) - Serializer is_valid and no errors, but validated_data is empty (third party API and DRF) Django Rest Framework Serializer 在 is_valid() 调用后弹出了validated_data,导致创建时出现KeyError - Django Rest Framework Serializer popped off the validated_data after is_valid() call, causing KeyError in create 带有源的序列化器字段不存在于验证数据中 - Serializer field with source is not present in validated_data 使用 Django REST 发出 POST 请求时,validated_data 为空 - validated_data is empty when making POST request with Django REST Python Django序列化器-> validated_data删除字段 - Python django serializer -> validated_data removes field Django序列化器的is_valid返回True,即使validate返回False - Django serializer's is_valid returning True even if validate returns False Django Rest框架可验证的嵌套序列化器数据从validated_data中丢失 - Django rest framework writeable nested serializer data missing from validated_data django-rest-framework:无法调用`.is_valid()`,因为在实例化序列化器实例时没有传递`data =`关键字参数 - django-rest-framework: Cannot call `.is_valid()` as no `data=` keyword argument was passed when instantiating the serializer instance Django Rest框架嵌套的序列化程序未在validated_data中返回关系值 - Django Rest framework nested serializer not returning relation values in validated_data 将可编辑字段作为 Django-Rest-Framework 串行器的验证数据方法传递 - Passing Editable Fields as validated_data method of Django-Rest-Framework Serializer
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM