在Django REST Framework的SerializerMethodField
中,self.instance
和参数obj
之间有什么区别?
根据SerializerMethodField的文档,它讨论obj
参数:
method_name参数所引用的序列化程序方法应接受单个参数(除了self之外),该参数是要序列化的对象。
并根据Serializers的文档讨论了self.instance
:
将初始对象或查询集传递给序列化程序实例时,该对象将以
.instance
的形式提供。如果未传递任何初始对象,则.instance
属性将为“无”。
然后它们引用相同的对象吗?
答案 0 :(得分:2)
传递给您方法的obj
参数基于SerializerMethodField的source
参数。
通常,source
参数只是"*"
,"*"
指示序列化程序将实例传递给方法。相反,如果您在SerializerMethodField上设置source="date_joined"
,则get_days_since_joined
可能看起来像这样:
def get_days_since_joined(self, date_joined):
return (now() - date_joined).days