我有一个自定义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.
如果我手动运行它们,命令就会起作用。
无法弄清楚发生了什么。
答案 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)
通常情况下,最后一个命令应该假装为您的所有应用程序应用初始迁移。
祝你好运。