关键错误'请求'在序列化器中

时间:2016-04-19 23:53:00

标签: django django-rest-framework

我试图让当前用户进入我的序列化程序,评估一个条件(用户是否喜欢这篇帖子?),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      

'请求'

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:5)

您可以将视图中的上下文发送到序列化程序,如下所示:

@api_view(['GET'])
def post_item(request, pk):
    serializer = PostSerializer(track, context={'request': request})
    return Response(serializer.data)