即使 is_valid 为 True,序列化程序验证数据也是空的

Sef*_*efa 9 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)
Run Code Online (Sandbox Code Playgroud)

这是我的序列化程序

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

    def create(self, validated_data):
        return User.objects.create(**validated_data)
Run Code Online (Sandbox Code Playgroud)

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

jst*_*379 4

您似乎没有使用自定义用户模型,并且 django.contrib.auth.models.User 没有名称和姓氏字段。但它确实有名字和姓氏。尝试将它们用作序列化器中的字段,因为它们是模型字段。否则,您将必须按照此答案的建议覆盖 to_internal_value 。

无法在 Django Rest Framework 序列化程序的 valid_data 中获取非模型字段