Можно ли выполнить итерацию по одному набору запросов, но показать другой набор в 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.