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