DRF:如何在自定义 DecimalField class 中访问 "context"?

DRF: How to access "context" inside custom DecimalField class?

我正在从 Django RestFramework 子classing DecimalField class 并且需要访问 context。十进制字段的格式包括用户可选择的设置,因此我需要在 to_representation() 方法中访问用户对象(我假设应该在 context 内)。

通过调试,我查看了 CustomDecimalField class 中 self 的所有属性,但是,当然,我看不到 class 方法,所以我不不知道是否有合适的“获取”方法来获取上下文。我试过 self.context(作为 属性)、self.get_context()self.getcontext(),但 none 有效。

我发现这条公告回复:require_contexthttps://www.django-rest-framework.org/community/3.11-announcement/ ...但它似乎只对验证和默认值方法有效。

这似乎是一件很简单的事情;很难相信它是如此困难。

您必须在上下文中手动设置用户。所以,在您看来:

serializer = YourSerializer(your_data, context={'user': request.user})

然后您将能够在您的 to_representation() 方法中访问它:

def to_representation(self, instance):
    user = self.context.get("user")

请参阅the documentation了解更多信息。