Прежде всего, некоторые ссылки на страницы, которые я использовал для справки: SO вопрос и документы Django по родовые отношения и наследование нескольких таблиц .
Пока у меня настроен дизайн наследования нескольких таблиц. Объекты (например, Автомобиль, Собака, Компьютер) могут наследовать класс Item. Мне нужно иметь возможность получать элементы из БД, получать подкласс и делать с ним что-то. Мой дизайн не позволяет извлекать различные типы объектов один за другим, поэтому мне нужно использовать контейнер Item, чтобы объединить их все в один. Когда у меня есть Предмет, документы Django говорят, что я могу получить подкласс, связав атрибут с именем модели (например, myitem.car или myitem.computer).
Я не знаю, на какой тип объекта ссылается мой предмет, так как я могу получить ребенка? Есть ли встроенный способ сделать это? Вот некоторые другие идеи, которые у меня были: (некоторые безумнее других)
- Я думал, что мог бы добавить что-то вроде
GenericForeignKey для элемента, который
ссылается на ребенка, но я в этом сомневаюсь
даже законно для родительского класса
относиться через ForeignKey к ребенку
класс.
- Полагаю, у меня мог быть
ForeignKey (ContentType) в элементе
класс, и найти атрибут
Элемент, чтобы получить ребенка на основе
Имя ContentType.
- Наконец, хотя это уродливый метод, я мог бы сохранить список типов объектов и пробовать каждый из них в качестве атрибута до тех пор, пока не будет выдана ошибка DoesNotExist.
Как видите, эти предложенные решения не так уж и элегантны, но я надеюсь, что мне не придется использовать одно из них, и у кого-то здесь может быть лучшее предложение.
Заранее спасибо