Django: Как уменьшить количество внутренних соединений при наследовании модели? - PullRequest
0 голосов
/ 11 декабря 2010

У меня есть несколько моделей, унаследованных от базовой модели.Поля в базовой модели нужны редко, но Django продолжает делать сложные внутренние соединения, чтобы извлекать эти поля всякий раз, когда я использую любую из унаследованных моделей.Как я могу сказать Django, чтобы избежать этого?Мне редко нужны поля в этой модели.

Примечание: может быть, только (..) будет работать (я не проверял), но мне нужно было бы добавить его во многих местах в коде ..

Ответы [ 2 ]

1 голос
/ 11 декабря 2010

Использование наследование абстрактной модели .

Короче говоря, установка abstract = True в мета-классе базового класса заставляет Django использовать абстрактное наследование, то есть каждая производная модель будет содержать копию всехполя, определенные в базовой модели.

Кстати, один из сопровождающих Джанго, Джейкоб Каплан-Мосс имеет довольно твердое мнение против конкретного наследования ,

*Наследование модели 1012 * также предлагает отличную возможность выстрелить себе в ногу: конкретное (многостоловое) наследование

и еще раз:

Я бы настоятельно рекомендовалчто пользователи Django подходят к любому использованию конкретного наследования с большой долей скептицизма.

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

0 голосов
/ 11 декабря 2010

Я бы сказал, что единственная возможность избежать этого - либо сделать ваш базовый класс abstract, либо создать несколько пользовательских SQL-запросов, которые не попадают в «базовую» таблицу ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...