django apps и models.py в 1.7 - что именно изменилось?

В Django 1.7 внесены некоторые очевидные изменения в работу приложений.

https://docs.djangoproject.com/en/dev/releases/1.7/

В этих заметках о выпуске говорится, что вы можете определять модели вне models.py и нам даже не нужен models.py (или же models/__init__.py) внутри приложения.

Я неправильно понимаю это? Если нет, может кто-нибудь объяснить, где мы определяем наши модели, если они не находятся в models.py и как django находит и загружает их?

1 ответ

Решение

Вы все еще должны определить свои модели в models.py,

До рефакторинга приложения в 1.7 не было единого API для объявления метаданных о вашем приложении. В частности, способ, которым Django определял, было ли приложение приложением или нет, находился в поиске models.py файл. Это была не элегантная система, особенно если учесть, что некоторые приложения даже не имеют моделей (например, приложение может просто предоставлять команды управления).

Теперь, когда AppConfig API существует, больше нет необходимости требовать существования models.py, Тем не менее, это все еще естественное и стандартное место для определения ваших моделей.

Как django находит и загружает их?

Из документации: "Вы должны определить или импортировать все модели в вашем приложении models.py или же models/__init__.py".

Это предполагает следующую практику: если у вас нет моделей, не включайте models.py, Если у вас есть модель файлов, поместите их в models.py, Если у вас есть несколько моделей и вы хотите распределить их по нескольким файлам, поместите файлы в models субмодуль и импортировать их содержимое в models/__init__.py,

Другие вопросы по тегам