Django在子文件夹中的迁移

时间:2016-09-18 09:18:38

标签: python django django-models django-migrations

我有以下项目结构:

bm_app_1
 | contents here
bm_app_2
 | contents here
bm_common
 | __init__.py
 | deletable
 |  | __init__.py
 |  | behaviors.py
 |  | models.py
 | timestampable
 |  | __init__.py
 |  | behaviors.py

应用bm_common中的文件定义了迁移文件中我想要的托管模型。但是,当我运行python managepy makemigrations时,不会考虑应用bm_common的子文件夹中的文件。所有应用都在INSTALLED_APPS

PREREQ_APPS = [
    required apps here
]
PROJECT_APPS = [
    'bm_common',
    'bm_app_1',
    'bm_app_2'
]
INSTALLED_APPS = PREREQ_APPS + PROJECT_APPS

有没有办法改变makemigrations的行为以查看子文件夹?如果没有,那么分裂的好建议是什么?我不希望在behaviors.py中有所有行为,因为它变得太大并且导致我的循环引用。

1 个答案:

答案 0 :(得分:2)

当app注册表填充所有模型时,需要以某种方式导入模型,否则它们没有注册,Django也不知道它们。最简单的解决方案是创建一个bm_common/models.py文件并导入所有模型:

from .deletable.models import ModelA, ModelB
from .timestampable.models import ModelC
...