django - Django rest框架:序列化依赖于其他状态的额外字段?
问题描述
这个问题询问如何向 ModelSerializer 添加一个附加字段。
这个答案说你可以添加一个SerializerMethodField
. 但是,如果调用的值取决于其他一些参数,如请求,如何实现方法字段?
解决方案
您可以为此使用序列化程序上下文(请参阅文档)
class MySerializer(serializers.Serializer):
my_field = serializers.SerializerMethodField()
def get_my_field(self, obj):
request = self.context['request']
# do something with request and obj
然后,当您初始化序列化程序时,请务必在上下文中传递请求对象,例如:
serializer = MySerializer(myObject, context={'request': request})