我的项目结构类似于以下内容:
models.py:
project
parentapp
__init__.py
models.py
migrations
__init__.py
subapp1
models.py
migrations
__init__.py
subapp2
models.py
migrations
__init__.py
project
__init__.py
settings.py
settings.py:
INSTALLED_APPS = (
'django.contrib.admin',
...
'parentapp',
'parentapp.subapp1',
'parnetapp.subapp2',
)
然后我跑
python manage.py makemigrations
它将parentapp的迁移放在parentapp/migrations/
中(应该如此)
它将subapp1的迁移放在subapp1/migrations/
中(应该如此)
然而,它将subapp2的迁移放在 parentapp/migrations/
中,而不是subapp2/migrations/
...
即使我运行python manage.py makemigration subapp2
,它仍会将subapp2的迁移放在错误的文件夹中。除了奇怪之外,当Django这样做时,任何在subapp2应用程序中创建模型的尝试都将失败ProgrammingError: relation "parentapp_somesubapp2model" does not exist"
。
为了解决这个问题,我可以手动破解subapp2的迁移,但为了将来的参考,以及为了避免将来出现这个问题, Django如何确定子应用程序的迁移何时应该进入父应用程序,以及何时应该进入子应用程序文件夹?
有没有办法以某种方式强迫它?
答案 0 :(得分:3)
在设置中,您可以明确设置MIGRATION_MODULES字典并传入应用迁移的正确位置:
MIGRATION_MODULES = {
'subapp2': 'subapp2.migrations'
}