Я настраиваю модели django для базы данных, и в настоящее время мой подход заключается в том, чтобы напрямую сопоставлять таблицы базы данных с Модели. Однако в некоторых случаях мне действительно нужно работать с относительно сложным представлением. Конкретный случай, когда у меня есть таблица (в отчете, а не базы данных), который должен показать объединенный список из связанных таблиц базы данных:Модели и представления базы данных в django
class Entity(Models):
name = CharField()
class LargeEntity(Entity):
size = FloatField()
class SmallEntity(Entity):
type = ForeignKey(SmallEntityType)
В докладе (и форму) должно показать:
Entity name - entity.name
Large/Small - 'Large' if entity is LargeEntity else 'Small'
size/type - entity.size if entity is LargeEntity else 'type'
Это можно сделать с помощью операторов CASE
в SQL, но так как это довольно часто происходит в моих данных, я бы предпочел найти более аккуратное решение.
Изменение формата отчета не включено, но база данных может быть изменена, если есть лучший способ ее реализации.