Django(1.7)将迁移置于错误的应用程序中

时间:2015-04-20 20:57:37

标签: django

我的项目结构类似于以下内容:

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如何确定子应用程序的迁移何时应该进入父应用程序,以及何时应该进入子应用程序文件夹?
有没有办法以某种方式强迫它?

1 个答案:

答案 0 :(得分:3)

在设置中,您可以明确设置MIGRATION_MODULES字典并传入应用迁移的正确位置:

MIGRATION_MODULES = {
 'subapp2': 'subapp2.migrations'
}