请求在 django to_representation 序列化器方法中可用吗?

Is request available inside django to_representation serializer method?

我正在尝试在 django 的 to_representation 序列化程序方法中执行请求检查,但 self.context 始终为空。有什么想法吗?

class TwitterAccountsListsSerializer(serializers.ModelSerializer):
    class Meta:
        model = TwitterAccountsList
        fields = ["id", "name", "created_at", "is_private", "accounts"]
        extra_kwargs = {
            "accounts": {"write_only": True},
        }
    
    def to_representation(self, instance):
        import pdb; pdb.set_trace()
        # self.context is always an empty dict here {}
        return super().to_representation(instance)

您需要通过序列化程序上下文传递请求。如果您使用通用视图和 get_serializer 函数而不是直接访问序列化程序,则默认情况下会传递请求。否则你可以像这样显式传递。

serializer = YouSerializerClass(#other arguments here, context={'request': request})

像这样的一般视图

serializer = self.get_serializer(# your argument here)

然后你可以像这样从任何地方的序列化程序访问它

request = self.context.get('request')