Рекомендации Django: количество классов моделей на структуру файла / каталога - PullRequest
5 голосов
/ 07 июля 2011

Еще один полезный вопрос для опытных: сколько моделей вы помещаете в один файл?

Я видел много примеров, которые объединяют все классы моделей в один файл "models.py",что действительно неправильно для меня.В предыдущих проектах, использующих другие стеки, я использовал один файл на класс модели.Как это правильно делается в Django для нетривиальных приложений, скажем, с 20 модельными классами?Как будет выглядеть структура каталогов?

1 Ответ

12 голосов
/ 08 июля 2011

Многие люди, особенно выходцы из мира Rails, зацикливаются на термине «приложение» и начинают бросать абсолютно все в одно приложение. В Django приложение - это одноразовый модуль, который делает одно и делает это хорошо. Каждое приложение должно быть описано в одном или двух коротких предложениях. «Проект» - это набор приложений, объединенных файлом настроек. Даже для чего-то такого сложного, как интернет-магазин, то, что я обнаружил сейчас, имея более четырех или пяти моделей в одном приложении, является предупреждающим знаком: было бы лучше, чтобы приложение store (в котором была корзина) было зависит от приложения product, чем оба в одном приложении. То же самое относится к invoices и payments, и так далее.

Взгляните на Django в реальном мире , презентацию Джейкоба Каплана-Мосса о том, как писать приложения на Django.

Приложение Django - это инкапсуляция: оно описывает один простой объект (или набор объектов) и его API. Наличие 20 моделей звучит так, как будто у вас нет чистого API и, следовательно, четкого представления о том, что делает это приложение.

Вам нужен ответ: «Это зависит от того, что делает ваше приложение». С этой целью, что, черт возьми, приложение с 20 моделями делает , в любом случае? Возьмите свою копию Рефакторинг и получайте удовольствие.

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