如何在序列化方法方法字段中获取request.user.id?

时间:2017-08-07 12:53:03

标签: python django-rest-framework django-serializer

这是我的序列化方法字段:

def get_is_user_to_user(self, obj):
    return obj.to_user == self.context.get('request').user.id

如果True是对应模型中的字段等于obj.to_user,我希望该方法返回布尔值request.user.id。目前,方法字段始终返回False,即使它应该返回True

如何从序列化方法字段中检查obj.to_user是否等于request.user.id

2 个答案:

答案 0 :(得分:0)

我使用了下面的示例视图

class CurrentUserView(APIView):
    def get(self, request):
        serializer = UserSerializer(request.user)
        return Response({"user": serializer.data})

答案 1 :(得分:0)

def get_is_user_to_user(self, obj):
    return obj.to_user == self.context.get('request').user.id

我认为您的 FK obj.to_user 是一个 User 实例,您无法与 self.context.get('request').user.id 进行比较。

您的代码应该:

def get_is_user_to_user(self, obj):
    return obj.to_user.id == self.context.get('request').user.id

或者:

def get_is_user_to_user(self, obj):
    return obj.to_user == self.context.get('request').user # Make sure you did not override request.user before.