Python 什么';在Django中处理初始数据库迁移的正确方法是什么?
我正在为Django应用程序的初始生产版本准备一个Django应用程序,我已经在几个不同的环境中部署了它的开发实例。有一件事我不能像我希望的那样顺利地进行,那就是最初的数据库迁移。如果重新安装了Django,从版本控制部署了我的应用程序,并提供了一个干净的数据库,Python 什么';在Django中处理初始数据库迁移的正确方法是什么?,python,django,Python,Django,我正在为Django应用程序的初始生产版本准备一个Django应用程序,我已经在几个不同的环境中部署了它的开发实例。有一件事我不能像我希望的那样顺利地进行,那就是最初的数据库迁移。如果重新安装了Django,从版本控制部署了我的应用程序,并提供了一个干净的数据库,manage.py migrate将处理所有表(Django和我的模型)的初始创建。这很好,但它实际上并没有为我的应用程序创建初始迁移文件。当我需要部署需要新数据库迁移的代码更改时,这会导致一个问题,因为Django没有计算增量的基础
manage.py migrate
将处理所有表(Django和我的模型)的初始创建。这很好,但它实际上并没有为我的应用程序创建初始迁移文件。当我需要部署需要新数据库迁移的代码更改时,这会导致一个问题,因为Django没有计算增量的基础
我尝试将运行
manage.py makemigrations
作为部署的第一步,希望它能够创建迁移文件,但它报告说没有要迁移的更改。我发现获得所需基线状态的唯一方法是为我的每个应用程序运行manage.py makemigrations[appname]
。没有特定应用程序名称调用的makemigrations
,不应该拾取所有已安装的应用程序并创建它们的迁移吗?我哪里出了问题?您最后出了问题——是的,您确实需要为每个应用程序调用一次manage.py makemigrations
。并非所有应用程序都会自动执行此操作
这大概是因为Django无法知道这是否是您想要做的(特别是如果某些应用程序是从PyPI下载的,等等)。而且每个应用程序只需一个命令并不是一项非常繁重的工作,对吗?感谢您的确认。重读这些文档,我出现这个问题的一个原因似乎是Django打算对迁移进行版本控制和分发。我的应用程序是围绕着不这样做而设计的,但也许我需要重新思考一下,“Django打算让迁移实现版本控制和分布式”——是的,没错。正是因为这个原因。您可能需要重新评估您的方法。