Django在第三方应用程序迁移之前运行迁移

时间:2016-02-04 16:23:17

标签: django django-migrations

我正在安装第三方应用,但需要重命名我的一个应用程序,因为名称发生了冲突。作为此重命名的一部分,我需要编写迁移以更新django_content_typedjango_migrations表。

问题在于迁移运行时,第三方应用程序迁移在我之前运行。我怎样才能强迫我在第三方应用程序之前运行?

当前迁移代码:

class Migration(migrations.Migration):

dependencies = [
    migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ('my_cms', '0003_promotedsearch_title_it'),
]

operations = [
    migrations.RunSQL(
        'UPDATE django_content_type SET app_label=\'my_cms\' '
        'WHERE app_label=\'cms\';'
    ),
    migrations.RunSQL(
        'UPDATE django_migrations SET app=\'my_cms\' WHERE app=\'cms\';'
    ),
]

感谢

2 个答案:

答案 0 :(得分:1)

dependenciesrun_before可帮助您订购迁移。请参阅:https://docs.djangoproject.com/en/1.9/howto/writing-migrations/#controlling-the-order-of-migrations

在您的情况下,您需要在包含第三方应用迁移的迁移中提供run_before列表。这将使您的迁移在列表中指定的迁移之前运行。

答案 1 :(得分:0)

尝试删除INSTALLED_APPS设置变量的第三方应用并迁移,然后再次将其放入INSTALLED_APPS