Почему Django не поддерживает одноуровневое наследование?

В чем обоснование решения не поддерживать однонаправленное наследование в Django?

Является ли ИППП плохим дизайном? Это приводит к низкой производительности? Будет ли это противоречить с ORM Django, как есть?

Просто интересно, потому что это была недостающая особенность в течение примерно десяти лет, и поэтому, должно быть, было сознательное решение о том, что она никогда не будет поддержана.

1 ответ

Возможно, одна из причин заключается в том, что Django не имеет (в настоящее время) возможности изменять таблицы базы данных после создания.

Вы можете "отчасти" выполнять STI с использованием прокси-моделей. Это не позволит вам иметь разные поля на разных моделях, но это позволит вам приложить различные действия (через методы модели) к различным подклассам.

Однако, если вы решили создать подкласс с дополнительными полями, Django не сможет обновить базу данных, чтобы это отразить.

licensed under cc by-sa 3.0 with attribution.