我想将参数isloggedin用户传递给Django前端

时间:2019-06-13 16:22:37

标签: django django-rest-framework

我正在将用户对象列表传递给前端。前端要分别显示当前登录的用户信息和其他用户的信息。为此,我想在用户序列化器中传递一个额外的字段。我正在使用视图集和序列化程序将用户列表传递给django前端。我该怎么做。

我的序列化器看起来像

class SomeUserSerializer(serializers.ModelSerializer):
    """
    Serializer for `some_user` table
    """
    isLogedInUser = serializers.SerializerMethodField('is_logged_in_user')
    user = UserSerializer(many=False)

    def is_logged_in_user(self, request):
        return self.user==request.user

    class Meta:
        model = SomeUser
        fields = ('user', 'something', 'isLogedInUser')

我的is_logged_in_user方法出错。它应该与用户对象一起返回true或false标志,具体取决于它是否是当前登录的用户

1 个答案:

答案 0 :(得分:0)

isLogedInUser使用的序列化程序方法接受名为request的参数。但是,根据documentation,该方法是在要序列化的对象SomeUser的实例下调用的。

您需要更改参数并通过additional context获取请求,如下所示:

    class SomeUserSerializer(serializers.ModelSerializer):
        """
        Serializer for `some_user` table
        """
        isLogedInUser = serializers.SerializerMethodField('is_logged_in_user', context={'request': request})
        user = UserSerializer(many=False)

        def is_logged_in_user(self, obj):
            return obj.user == self.context['request'].user

        class Meta:
            model = SomeUser
            fields = ('user', 'something', 'isLogedInUser')