Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 什么';在Django中处理初始数据库迁移的正确方法是什么?_Python_Django - Fatal编程技术网

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

Python 什么';在Django中处理初始数据库迁移的正确方法是什么?,python,django,Python,Django,我正在为Django应用程序的初始生产版本准备一个Django应用程序,我已经在几个不同的环境中部署了它的开发实例。有一件事我不能像我希望的那样顺利地进行,那就是最初的数据库迁移。如果重新安装了Django,从版本控制部署了我的应用程序,并提供了一个干净的数据库,manage.py migrate将处理所有表(Django和我的模型)的初始创建。这很好,但它实际上并没有为我的应用程序创建初始迁移文件。当我需要部署需要新数据库迁移的代码更改时,这会导致一个问题,因为Django没有计算增量的基础

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


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

您最后出了问题——是的,您确实需要为每个应用程序调用一次
manage.py makemigrations
。并非所有应用程序都会自动执行此操作


这大概是因为Django无法知道这是否是您想要做的(特别是如果某些应用程序是从PyPI下载的,等等)。而且每个应用程序只需一个命令并不是一项非常繁重的工作,对吗?

感谢您的确认。重读这些文档,我出现这个问题的一个原因似乎是Django打算对迁移进行版本控制和分发。我的应用程序是围绕着不这样做而设计的,但也许我需要重新思考一下,“Django打算让迁移实现版本控制和分布式”——是的,没错。正是因为这个原因。您可能需要重新评估您的方法。