我有一个遗留应用程序,它具有相对于顶部入口点(A -> B -> C -> D -> E -> F -> G -> H
)八个深度的模型关系,并且F -> G -> H
跳转到Mongo。我知道我可以为每个级别编写序列化程序并引用每个级别,as in the DRF documentation example here。然后我的输出结果将达到八级深度,这不是我想要的。我想要的是总结A端点中模型H的单个字段。
我只需要H
中对数据的只读访问权限。我正在考虑做的是实现自定义serializers.RelatedField
到B
并使用其to_representation()
方法进行查找。这是推荐的方法吗?
答案 0 :(得分:1)
my_h = serializers.SerializerMethodField()
def get_my_h(self, obj):
return obj.b.c.d.e.f.g.h or some_better_logic_here_to_actually_get_h
您上面的实际逻辑需要调整以满足您的需求(由于您尝试达到的水平,我不希望它表现良好)......但基本上obj
是您要序列化的当前实例,因此您可以根据需要使用它