在Django中处理初始数据库迁移的正确方法是什么?

时间:2015-02-12 19:03:53

标签: python django

我正在为其初始生产版本准备Django应用程序,我已经在几个不同的环境中部署了它的开发实例。我不能像我想的那样顺利地完成一件事是初始数据库迁移。鉴于全新安装Django,从版本控制部署我的应用程序,以及一个干净的数据库,manage.py migrate将处理所有表(Django和我的模型')的初始创建。这很好,但它实际上并没有为我的应用程序创建初始迁移文件。当我需要部署需要新数据库迁移的代码更改时,这会导致出现问题,因为Django没有计算增量的基础。

我已经尝试运行manage.py makemigrations作为部署的第一步,希望它能够创建迁移文件,但它报告说没有迁移的更改。我发现获得我需要的基线状态的唯一方法是为我的每个应用程序运行manage.py makemigrations [appname]。不应该在没有特定应用名称的情况下调用makemigrations来获取所有已安装的应用并创建其迁移?我哪里错了?

1 个答案:

答案 0 :(得分:2)

最后你错了 - 是的,你需要为你的每个应用程序拨一次manage.py makemigrations <appname>。它不会自动为所有应用程序完成。

据推测,这是因为Django无法知道您是否想要这样做(特别是如果某些应用程序是从PyPI下载的,等等)。每个应用程序的单个命令实际上不是一个极端的工作量,对吧?