Python 如何使用django和rest框架更新用户数据?

Python 如何使用django和rest框架更新用户数据?,python,django,django-rest-framework,Python,Django,Django Rest Framework,尝试更新用户时,会出现以下消息:“具有此用户名的用户已存在” 我有一个标准的Django用户模型,还有一个扩展的概要文件模板 如何更新此数据,包括用户配置文件 多谢各位 模型 序列化程序 class ProfileSerializer(serializers.ModelSerializer): class Meta: model = Profile fields = ('nome_empresa', 'cnpj') class UserSerializ

尝试更新用户时,会出现以下消息:“具有此用户名的用户已存在”

我有一个标准的Django用户模型,还有一个扩展的概要文件模板

如何更新此数据,包括用户配置文件

多谢各位

模型

序列化程序

class ProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = Profile
        fields = ('nome_empresa', 'cnpj')


class UserSerializer(serializers.ModelSerializer):
    profile = ProfileSerializer()
    class Meta:
        model = User
        fields = ('username', 'email', 'first_name', 'last_name', 'profile')
看法


默认情况下,django rest框架不更新嵌套序列化程序。要更新概要文件对象,需要重写序列化程序的更新方法

class UserSerializer(serializers.ModelSerializer):
    profile = ProfileSerializer()

    def update(self, instance, validated_data):
        """Override update method because we need to update
        nested serializer for profile
        """
        if validated_data.get('profile'):
            profile_data = validated_data.get('profile')
            profile_serializer = ProfileSerializer(data=profile_data)

            if profile_serializer.is_valid():
                profile = profile_serializer.update(instance=instance.profile)
                validated_data['profile'] = profile

        return super(UserSerializer, self).update(instance, validated_data)

    class Meta:
        model = User
        fields = ('username', 'email', 'first_name', 'last_name', 'profile')

您的意思是什么
place\u data
是否输入错误?发生错误:TypeError:update()缺少1个必需的位置参数:“validated\u data”我能够正确包含validate\u数据,但返回成功,数据库中未保存任何其他内容。
class usuario(APIView):


    def patch(self, request, format=None):

        user = UserSerializer(data=request.data)

        if user.is_valid():
            user.update(instance=request.user)
            return Response(HTTP_200_OK)

        return Response(user.errors)
class UserSerializer(serializers.ModelSerializer):
    profile = ProfileSerializer()

    def update(self, instance, validated_data):
        """Override update method because we need to update
        nested serializer for profile
        """
        if validated_data.get('profile'):
            profile_data = validated_data.get('profile')
            profile_serializer = ProfileSerializer(data=profile_data)

            if profile_serializer.is_valid():
                profile = profile_serializer.update(instance=instance.profile)
                validated_data['profile'] = profile

        return super(UserSerializer, self).update(instance, validated_data)

    class Meta:
        model = User
        fields = ('username', 'email', 'first_name', 'last_name', 'profile')