重命名 Django 迁移文件是否安全?

Is it safe to rename Django migrations file?

从 Django 1.8 开始,makemigrations 命令有一个 --name, -n option 来为创建的迁移文件指定自定义名称。

我想知道在旧版本的 Django 中使用自动生成的名称创建迁移文件然后手动重命名该文件是否安全。它似乎按预期工作。有没有潜在的风险?

这是有效的,但有一个小警告:Django 将不再知道已应用重命名的迁移。

因此重命名迁移的步骤是:

  1. 重命名文件。
  2. 将任何依赖项重新指向新文件。
  3. 如果已应用重命名的迁移,请使用 --fake 再次应用。

如果是全新的迁移,则 2 和 3 将不适用,重命名它们完全没问题。

每次压缩迁移时,Django 中都会发生这种情况。生成一个包含 class 变量 replaces 的新文件,它列出了正在被替换的迁移文件。

因此,要重命名文件迁移文件,请在迁移 class 中添加以下变量:

replaces = [('app name', 'migration file name'), ]

一切都像文件更改之前一样。