Django Rest Framework - 使用相同实例的序列化器内部的序列化器

Django Rest Framework -Serializer inside serializer using same instance

所以,我有一个奇怪的遗留问题,我有一个模型“数据”,为了序列化目的,我需要重组字段。


class Data(models.Model):
   id ...
   field_a
   field_b
   field_c
   date

然后我有序列化程序:

class DataInfoSerializer(ModelSerializer):
    class Meta:
        model = Data
        fields = ['field_a', 'field_b', 'field_c']


class DataSerializer(ModelSerializer):
    data_info = DataInfoSerializer(required=False, read_only=True)
    
    class Meta:
        model = Data
        fields = ['id', 'date', 'data_info']

现在我必须以某种方式让 DRF 使用传递到“DataSerializer”的同一数据实例来呈现 DataInfoSerializer。

有什么实现方法吗?或者更好的方法。

使用source='*'将整个对象传递给一个字段,包括嵌套的序列化程序。 Docs

class DataSerializer(ModelSerializer):
    data_info = DataInfoSerializer(required=False, read_only=True, source='*')
    
    class Meta:
        model = Data
        fields = ['id', 'date', 'data_info']