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

Posted

技术标签:

【中文标题】重命名 Django 迁移文件是不是安全?【英文标题】:Is it safe to rename Django migrations file?重命名 Django 迁移文件是否安全? 【发布时间】:2015-08-06 04:49:19 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

所以重命名迁移的步骤是:

    重命名文件。 将所有依赖项重新指向新文件。 如果已应用重命名的迁移,请使用--fake 再次应用它。

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

【讨论】:

“将任何依赖项重新指向新文件”是什么意思? 我计算出它的意思是“如果此迁移位于链的中间,则需要编辑下一个迁移以在其中使用新名称而不是旧名称” 【参考方案2】:

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

所以要重命名文件迁移文件,请在 Migration 类中添加以下变量:

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

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

【讨论】:

以上是关于重命名 Django 迁移文件是不是安全?的主要内容,如果未能解决你的问题,请参考以下文章

如何重命名 Django 应用程序并将数据从一个应用程序迁移到另一个应用程序

在 Django 中重命名模型(表)

text 使用django 1.7中的迁移重命名字段

Django 1.8:删除/重命名数据迁移中的模型字段

Django 2.0.7 - 进行重命名字段迁移时出现语法错误

python 重命名具有迁移功能的Django应用程序已经很糟糕。这是我发现的一种方法,可以保留您的旧迁移历史记录并保留