6

在我的项目的初始阶段,我对模型进行了很多更改,因此我最终为我的应用程序生成了很多南迁移。在去我的生产服务器执行迁移之前,是否可以以任何方式整合它们,这样我就不会为每个应用程序进行一百万次迁移?如果是这样,我将如何去做?

4

3 回答 3

5

您始终可以删除现有迁移并创建一个新的“初始”迁移

为此,您需要:

  1. 删除应用程序的迁移文件(完全删除文件夹)
  2. ./manage.py convert_to_south myapp

这将为您留下与您的应用程序状态当前状态相对应的单个迁移。


或者,您始终可以将最新的迁移打包在一起:

  1. 删除要合并的迁移文件(仅当它们是最新的一次)
  2. ./manage.py schemamigration myapp

这将创建一个与您删除的迁移相对应的新迁移。


这两个都可能会弄乱您的开发数据库。

于 2013-01-09T16:25:36.400 回答
1

由于这是一个开发环境,我就是这样做的(使用 SQLite,其他 SQL 服务器见下文):

  1. 做所有的改变,让迁移文件堆积起来。不向 VCS 提交迁移文件
  2. 完成后,删除所有新的迁移文件
  3. 重命名数据库
  4. 运行 manage.py 迁移。这将创建数据库结构,就像您对其进行任何更改之前一样。
  5. 运行 manage.py makemigrations。这将创建反映您当前状态的必要迁移
  6. 移回已经具有最终结构和数据的原始数据库
  7. 提交迁移文件

When using "proper" SQL servers, just keep two databases: production and development. Change project settings to point to production database instead of renaming in step 3. Also, you can skip step 4.

于 2015-09-14T13:40:20.303 回答
0

Make Sure you have your existing migrations migrated to db. And then delete all migrations available for a particular app and run

python manage.py makemigrations

  • you will see your migrations being consolidated into a single file named 000initial.py
于 2021-07-10T02:48:22.167 回答