小编PoY*_*era的帖子

Django Rest Framework 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
Run Code Online (Sandbox Code Playgroud)

所以我在另一个中使用了该序列化器:

class EstadoSerializer(serializers.ModelSerializer):
    publicacion = PublicacionSerializer(read_only=True)
Run Code Online (Sandbox Code Playgroud)

在 views.py 我有

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

class ModificarEstadoDetail(ModificarEstadoMixin, RetrieveUpdateAPIView):
    permission_classes = (permissions.IsAuthenticated,
              CanModifEstado,)
    pass
Run Code Online (Sandbox Code Playgroud)

当我访问 url 以了解用户是否喜欢某个帖子时,我在代码行中收到了 KeyError 'request'

user = self.context['request'].user
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决它?

django django-rest-framework

6
推荐指数
1
解决办法
3203
查看次数

如何在 Django 中使用 for in 循环执行查询集

我使用查询集从城市获取用户列表:

usuarios = Usuario.objects.filter(municipio=muni).exclude(user_id = ide)
Run Code Online (Sandbox Code Playgroud)

所以我得到类似的信息:

[Usuario:user1,Usuario:user2,Usuario:user3]

这很好,但我需要做另一个查询集来获取他们的设备

for usuario in usuarios:
    devices = GCMDevice.objects.filter(user_id=usuario.user.id)
Run Code Online (Sandbox Code Playgroud)

我只从最后一个用户(usuario)那里得到最后一个设备:

[GCMDevice:三星]

有人知道我如何从该用户那里获取所有设备吗?

django django-models django-queryset

3
推荐指数
1
解决办法
1万
查看次数