Если вы зададите себе вопрос «Что делает мое приложение делает ?» и вы не можете ответить одним предложением, тогда вам нужно разбить его на части.
Как правило, вы хотите сохранить интерфейс управления и общедоступный интерфейс в одном «приложении», однако их пространство имен можно указывать отдельно.
-- questions/
|-- models.py # holds common models, imports models from backend/models.py
|-- admin.py # admin interface'
|-- frontend/
| |-- urls.py
| |-- views.py
| `-- ...
`-- backend/
|-- urls.py
|-- views.py
`-- models.py # holds specialist models. set Meta: app_label = 'questions.backend'
Руководящий принцип Аспектно-ориентированное программирование - это разделение интересов. Это означает, что вы должны стараться, чтобы ваши модули были как можно меньше и сфокусированы. Они должны делать одно и только одно. Помните, что root models.py может импортировать любое количество моделей из дочерних модулей, и они будут выбраны django как часть приложения, поэтому не нужно хранить их все в одном и том же место.