Будет довольно сложно дать вам окончательный ответ, не спрашивая лот о ваших конкретных потребностях. Однако в ORM Django нет ничего, что мешало бы вам сделать это.
Вот способ сделать это - обратите внимание, что я ни в коем случае не утверждаю, что это only способ, и я мог бы порекомендовать что-то еще, если дать больше разъяснений по ваши цели:
class Automobile(models.Model):
[...]
type = models.ChoiceField(choices=(
('car', 'Car'),
('truck', 'Truck'),
('bus', 'Bus'),
))
@property
def detail(self):
return getattr(self, self.type)
class Car(Automobile):
[...]
class Truck(Automobile):
[...]
class Bus(Automobile):
[...]
Убедитесь, что, если вы пойдете по этому пути, вы захотите прочитать документацию по наследованию нескольких таблиц: https://docs.djangoproject.com/en/1.3/topics/db/models/#multi-table-inheritance
Вы также можете или не хотите, чтобы модель верхнего уровня была реальной таблицей (см. Текст чуть выше в приведенной мной ссылке для обсуждения абстрактных моделей). Я не могу сказать вам, что использовать - это зависит от того, что вы пытаетесь сделать.
Возможно, вам также понадобятся некоторые пользовательские сигналы, обеспечивающие точность данных, например, чтобы вы не сохранили запись Bus для автомобиля типа Truck.