Можно ли выполнить итерацию по одному набору запросов, но показать другой набор в DRF?

У нас есть объект config в нашем коде и простая таблица для псевдонимов config (alias + config). Я хочу создать общий API, используя ModelSerializers для перечисления следующего для каждого ALIAS:

{
    "alias": "test",
    "config_param_1": 1,
    "config_param_2": True
}

Как я представлял себе сериализатор, работающий со стандартным ModelViewSet, выглядит следующим образом:

class DeviceConfigSerializer(serializers.ModelSerializer):
    class Meta:
        model = Alias
        fields = [f.name for f in Config._meta.get_fields() if f.name not in ['id', 'other_fields']]

Тогда мне нужно будет переписать метод получения полей, чтобы он принимал поля alias.conf. Попробовав несколько способов (как показано ниже), я не могу заставить его работать.

def to_representation(self, instance):
    if isinstance(instance, Config):
        return super().to_representation(instance.conf)
    return super().to_representation(instance)

TL;DR: Я хочу, чтобы ListSerializer выполнял итерации над моделью ALIAS, но на самом деле показывал детали для модели CONFIG плюс alias.id.

Вернуться на верх