首页 > 解决方案 > 我想将参数 isloggedin 用户传递给 django 前端

问题描述

我正在将用户对象列表传递给前端。前端想要分别显示当前登录的用户信息和其他用户信息。为此,我想在用户序列化程序中传递一个额外的字段。我正在使用视图集和序列化程序将用户列表传递给 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 方法有问题。它应该与用户对象一起返回真或假标志,具体取决于它是否是当前登录的用户

标签: djangodjango-rest-framework

解决方案


使用的序列化器方法采用isLogedInUser一个名为request. 但是,根据文档,该方法是使用被序列化的对象调用的,它是SomeUser.

您需要更改参数并通过附加上下文获取请求,如下所示:

    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')

推荐阅读