我有以下项目结构:
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
app 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 中,因为它变得太大并且对我造成循环引用。
请您参考如下方法:
当应用注册表填充所有模型时,需要以某种方式导入模型,否则它们不会被注册并且 Django 不知道它们。最简单的解决方案是创建一个 bm_common/models.py 文件并在其中导入所有模型:
from .deletable.models import ModelA, ModelB
from .timestampable.models import ModelC
...
