南不在自定义管理命令内工作

时间:2014-08-08 08:52:01

标签: django django-south

我有一个自定义django管理命令,用于初始化应用程序迁移。麻烦的是,南方没有检测到命令中的新迁移。

for app in custom_apps:
    call_command('schemamigration', app, initial=True)
    call_command('migrate', app, fake=True)

这会创建初始迁移,但不会应用它们。

? You have no migrations for the 'profile' app. You might want some.

我尝试使用convert_to_south,但它只转换列表中的第一个应用,然后为其余的应用提供此错误

This application has no models; this command is for applications that already have models syncdb'd.
Make some models, and then use ./manage.py schemamigration candidates --initial instead.

如果我手动运行它们,命令就会起作用。

无法弄清楚发生了什么。

1 个答案:

答案 0 :(得分:1)

我认为您错过了 migrate 命令的参数。 See here转换您的应用的一个小例子。他们的命令如下:

  

./ manage.py migrate myapp 0001 --fake

所以,你可以尝试这样的事情:

for app in custom_apps:
    call_command('schemamigration', app, initial=True)
    call_command('migrate', 0001, fake=True)

如果您想立即转换所有应用,可以在循环外使用此代码。

call_command('migrate', 0001, fake=True, all=True)

通常情况下,最后一个命令应该假装为您的所有应用程序应用初始迁移。

祝你好运。