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_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")
请参阅the documentation了解更多信息。
我正在从 Django RestFramework 子classing DecimalField class 并且需要访问 context
。十进制字段的格式包括用户可选择的设置,因此我需要在 to_representation()
方法中访问用户对象(我假设应该在 context
内)。
通过调试,我查看了 CustomDecimalField class 中 self
的所有属性,但是,当然,我看不到 class 方法,所以我不不知道是否有合适的“获取”方法来获取上下文。我试过 self.context
(作为 属性)、self.get_context()
和 self.getcontext()
,但 none 有效。
我发现这条公告回复: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")
请参阅the documentation了解更多信息。