我正在将用户对象列表传递给前端。前端要分别显示当前登录的用户信息和其他用户的信息。为此,我想在用户序列化器中传递一个额外的字段。我正在使用视图集和序列化程序将用户列表传递给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标志,具体取决于它是否是当前登录的用户
答案 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')