2017-03-06 120 views
1

我有我的串行这样Django的REST框架KeyError异常 '请求'

class PublicacionSerializer(serializers.ModelSerializer): 
    usuario = UserSerializer2() 
    likeado = serializers.SerializerMethodField() 

    class Meta: 
     model = Publicacion 
     fields = ('id','usuario', 'likeado') 

    def get_likeado(self, obj): 
     user = self.context['request'].user 
     try: 
      like = Like.objects.get(publicacion=obj, usuario=user) 
      return like.id 
     except Like.DoesNotExist: 
      return False 

所以我用在另外一个seriaizer:

class EstadoSerializer(serializers.ModelSerializer): 
    publicacion = PublicacionSerializer(read_only=True) 

在views.py我有

class ModificarEstadoMixin(object): 
    queryset = Estado.objects.all() 
    serializer_class = EstadoSerializer 

class ModificarEstadoDetail(ModificarEstadoMixin, RetrieveUpdateAPIView): 
    permission_classes = (permissions.IsAuthenticated, 
       CanModifEstado,) 
    pass 

当我访问的网址知道如果用户喜欢一个帖子我得到了一个KeyError'请求'在代码行

user = self.context['request'].user 

有谁知道如何解决它?

回答

2

当你调用序列化,你必须从视图传递上下文像

MySerializer(context={'request': request}) 
+0

或者也可以称之为'get_serializer'方法,其将通过上下文你 –

+0

我不知道我应该把它@itzmeontv我编辑我的帖子 –