Перемещение моделей Django в свои файлы - PullRequest
9 голосов
/ 17 февраля 2012

Во имя удобства обслуживания я переместил некоторые из моих более крупных моделей в свои собственные файлы.Так что раньше у меня было это:

app/
  models.py

и теперь у меня есть это:

app/
  models/
    __init__.py
    model_a.py
    model_b.py

Это работает нормально, но когда я использую manage.py для синхронизации db, это не таксоздайте таблицу для этих моделей.

Я что-то забыл?

Спасибо,

Ответы [ 2 ]

18 голосов
/ 17 февраля 2012

Модели должны быть найдены в модуле с именем app.models, где app - это имя приложения.Таким образом, вы должны написать в app/models/__init__.py файл

 from model_a import * 
 from model_b import * 

В Django <1.7 </h3> Обратите внимание на fron django 1.7 и далее это не обязательно Более того --- (вот с чем у меня были проблемы) вам придется вручную обновить атрибут app_label для ваших моделей, поэтому напишите: __all__ = ["ModelA", "ModelA1"] class ModelA(models.Model): class Meta: app_label = 'your_app' без него приложение будет установленонеправильно Джанго. Если вы уверены, что from model_a import * - зло, вы всегда можете установить атрибуты __all__ во всех модулях.

9 голосов
/ 17 февраля 2012

Вам необходимо установить Meta.app_label для каждой модели на имя приложения, к которому она относится, и убедиться, что они импортированы из models/__init__.py.

Более подробную информацию можно посмотреть здесь: https://code.djangoproject.com/wiki/CookBookSplitModelsToFiles

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