即使is_valid为True,Serializer validated_data也为空

时间:2015-09-24 13:28:59

标签: python django django-rest-framework

以下代码返回一个空的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)

这是我的序列化器

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('name', 'surname', 'password', 'email')

    def create(self, validated_data):
        return User.objects.create(**validated_data)

当我发送请求时,serializer.initial_data已正确填写。 is_valid正在返回True,但validated_data为空。

1 个答案:

答案 0 :(得分:2)

看起来您使用的是自定义用户模型,而django.contrib.auth.models.User没有名称和姓氏字段。但它确实有first_name和last_name。尝试将它们用作序列化程序中的字段,因为它们是模型字段。否则你将不得不覆盖to_internal_value,因为这个答案暗示。

Unable to get a non-model field in the validated_data of a Django Rest Framework serializer