我正在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")
有关详细信息,请参阅文档。