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



我正在Django RestFramework中对DecimalField类进行子类化,需要访问context。十进制字段的格式包括用户可选择的设置,因此我需要访问to_representation()方法内的用户对象(我认为它应该在context内(。

通过调试,我已经查看了CustomDecimalField类中self的所有属性,但当然,我看不到类方法,所以我不知道是否有合适的"得到";方法来获取上下文。我尝试过self.context(作为属性(、self.get_context()self.getcontext(),但都不起作用。

我发现此公告的编号为:require_context:https://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")

有关详细信息,请参阅文档。