Skip to main content
 首页 » 编程设计

python之子文件夹中的 Django 迁移

2024年10月17日37daizhj

我有以下项目结构:

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 
...