首页 > 解决方案 > Django rest框架:序列化依赖于其他状态的额外字段?

问题描述

这个问题询问如何向 ModelSerializer 添加一个附加字段。

这个答案说你可以添加一个SerializerMethodField. 但是,如果调用的值取决于其他一些参数,如请求,如何实现方法字段?

标签: djangodjango-rest-framework

解决方案


您可以为此使用序列化程序上下文(请参阅文档

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})

推荐阅读