Python Django Rest框架:用户更新

Python Django Rest框架:用户更新,python,django,django-rest-framework,Python,Django,Django Rest Framework,我知道这已经被讨论过了,它是基本的,但我找不到它有什么问题。我已经完成了我的旧项目(很有效!),并与我所做的工作保持一致。它从未在序列化程序中更新,我不知道为什么。 我不知道我还缺少什么 错误: {“姓氏”:[“此字段不能为空。”],“传递…”… 空。“]”,“电子邮件”:[“此字段不能为空。”]},状态:400 前端补丁('api/getprofile') django/DRF序列化程序: class UserSerializer(serializers.ModelSerializer):

我知道这已经被讨论过了,它是基本的,但我找不到它有什么问题。我已经完成了我的旧项目(很有效!),并与我所做的工作保持一致。它从未在序列化程序中更新,我不知道为什么。 我不知道我还缺少什么

错误

{“姓氏”:[“此字段不能为空。”],“传递…”… 空。“]”,“电子邮件”:[“此字段不能为空。”]},状态:400

前端
补丁('api/getprofile')

django/DRF序列化程序

class UserSerializer(serializers.ModelSerializer):
    first_name = serializers.CharField()
    last_name = serializers.CharField()
    email = serializers.EmailField()
    password = serializers.CharField(style={'input_type': 'password'})

    class Meta:
        model = User
        fields = '__all__'

    def create(self, validated_data):
        user = User.objects.create(
            username=validated_data.get('username'),
            email=validated_data.get('email'),
            password=validated_data.get('password')
        )
        user.set_password(validated_data.get('password'))
        user.save()
        return user

    def update(self, instance, validated_data):
        #print instance <-- if never gets here... is update not update
        for key, value in validated_data.items():
            if value:
                print value
                setattr(instance, key, value)
        instance.save()
        return instance   

您可能需要为
APIView
提供的唯一实现是
get\u对象
方法

从源代码中,
update
(用于HTTP PUT请求)和
partial_update
按您的方式实现

您提供的
mixins.UpdateMixins.update
覆盖允许对
HTTP PUT
请求进行部分更新,并将模型实例传递给序列化程序进行更新。i、 e

但是,我建议不要以当前方式对
mixins.UpdateMixins.update执行覆盖。

使用在
mixins.UpdateMixins
中实现的HTTP请求的标准处理,并仅为
提供实现。get\u object()


您已经使用
UserRetrieveUpdateAPIView.get_object()

完成了此操作。您想实现什么?@OluwafemiSule更新数据。
class UserRetrieveUpdateAPIView(generics.RetrieveUpdateAPIView):
    serializer_class = UserSerializer
    permission_classes = (IsAuthenticated, )
    queryset = User.objects.all()

    def get_object(self):
        return self.request.user

    def update(self, request, *args, **kwargs):
        serializer = UserSerializer(data=request.data, partial=True)
        serializer.is_valid(raise_exception=True)
        self.perform_update(serializer)
        instance = serializer.instance
        return Response(UserSerializer(instance=instance).data, status=status.HTTP_200_OK)
serializer = UserSerializer(self.get_object(), data=request.data, partial=True)