序列化程序中的关键错误“请求”

Seb*_*sen 3 django django-rest-framework

我试图在序列化程序中获取当前用户,以评估条件(用户是否喜欢这篇文章?),是我尝试的答案,但似乎不起作用:

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')
Run Code Online (Sandbox Code Playgroud)

我的看法很简单:

@api_view(['GET'])
def post_item(request, pk):
        serializer = PostSerializer(post)
        return Response(serializer.data)
Run Code Online (Sandbox Code Playgroud)

尝试get_liked这样做时会引发错误:

/ api / posts / 1处的KeyError

'请求'

我在这里想念什么吗?

fip*_*ips 5

您可以像这样将上下文从视图发送到序列化器:

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

  • 别!它发生了! (3认同)