我应该对我的所有应用程序运行Django“makemigrations”吗?

时间:2015-09-22 18:00:22

标签: django django-models

我刚刚将我的项目升级到Django 1.8.4。我以前从未在此项目中使用过迁移。我发现我必须对我的四个应用程序显式运行“makemigrations”命令,因为它们包含auth_user表的外键。我是否需要对其他六个应用程序运行makemigrations命令?我问的原因是因为documents说,

  

如果您的应用已经有模型和数据库表,并且还没有迁移(例如,您是根据以前的Django版本创建的),则需要将其转换为使用迁移“

然而,当我对我的“home”应用程序运行命令时,我收到了这条消息:

No changes detected in app 'home'

将项目转换为Django 1.8时,是否应针对所有应用程序运行makemigrations命令,然后如果实际数据库表已存在则运行“migrate --fake-initial”?

感谢。

1 个答案:

答案 0 :(得分:4)

确实,有很多次,我必须删除并重新创建我的开发数据库。

在此过程中,我遇到了同样的问题,尤其是在升级到Django 1.8.* / 1.9.*之后。

在我的脚本中,删除迁移文件夹的内容后,我在所有应用程序中单独运行makemigrations simultaneously

./manage.py makemigrations <myapp1> <myapp2> ... <myappN>

在此之前,我备份了我的所有数据:

./manage.py dumpdata --exclude auth.permission --exclude contenttypes --exclude admin.LogEntry --indent 2 > db.json