Django Rest Framework -Сериализатор внутри сериализатора с использованием одного экземпляра

Итак, у меня есть странная проблема, связанная с наследием, где у меня есть одна модель "Data", и для целей сериализации мне нужно изменить структуру полей.


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 использовать тот же экземпляр Data, который передается в "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']
Вернуться на верх