我有以下项目结构:
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
中有所有行为,因为它变得太大并且导致我的循环引用。
答案 0 :(得分:2)
当app注册表填充所有模型时,需要以某种方式导入模型,否则它们没有注册,Django也不知道它们。最简单的解决方案是创建一个bm_common/models.py
文件并导入所有模型:
from .deletable.models import ModelA, ModelB
from .timestampable.models import ModelC
...