固定错误实例对象不可调用 [英] fixed error instance object is not callable

查看:50
本文介绍了固定错误实例对象不可调用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要使用基于APIView Class的代码来编辑用户详细信息(例如first_name,last_name).下面给出了serializers.py和views.py,但未根据用户详细信息进行更改.我正在传递令牌进行用户身份验证.任何帮助将不胜感激.

I need code for editing user details like first_name , last_name by using APIView Class based. THe serializers.py and views.py are given under but it is not making the changes according to the user details . i am passing token for user authentication. Any assistance will be appreciated.

Serializers.py

Serializers.py

class UserEditSerializer(serializers.Serializer):
    email = serializers.EmailField(required=True)
    first_name = serializers.CharField(required=True)
    last_name = serializers.CharField(required=True)

    def update(self, validated_data, instance):

        instance.first_name = validated_data.get('first_name')
        instance.email = validated_data.get('email')
        instance.last_name = validated_data.get('last_name')
        instance.save()
        return instance

Views.py

Views.py

class UserEditProfile(APIView):
    authentication_classes = (authentication.TokenAuthentication,)
    permission_classes = (permissions.IsAuthenticated,)

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

    def post(self, request):
        self.object = self.get_object()
        serializer = UserEditSerializer(data=request.data)
        if serializer.is_valid():
            self.object.save()
            return Response(serializer.data, status=status.HTTP_200_OK)
        else:
            return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)

推荐答案

如果您不提供序列化程序,序列化程序将如何知道它必须更新用户?

How would the serializer know it must update a user if you don't provide it ?

    serializer = UserEditSerializer(data=request.data)

应为:

    serializer = UserEditSerializer(self.object, data=request.data)

另外,在返回实例

这篇关于固定错误实例对象不可调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆