我试图让当前用户进入我的序列化程序,评估一个条件(用户是否喜欢这篇帖子?),this answer是我尝试的但是它似乎不起作用:
def current_user(self):
return self.context['request'].user
class PostSerializer(serializers.ModelSerializer):
liked = serializers.SerializerMethodField()
def get_liked(self, obj):
return str(current_user(self))
class Meta:
model = Track
fields = ('foo', 'liked')
我非常简单的观点:
@api_view(['GET'])
def post_item(request, pk):
serializer = PostSerializer(post)
return Response(serializer.data)
尝试get_liked
时会出现错误:
/ api / posts / 1
的KeyError'请求'
我在这里错过了什么吗?
答案 0 :(得分:5)
您可以将视图中的上下文发送到序列化程序,如下所示:
@api_view(['GET'])
def post_item(request, pk):
serializer = PostSerializer(track, context={'request': request})
return Response(serializer.data)