重命名 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 2.0.7 - 进行重命名字段迁移时出现语法错误
python 重命名具有迁移功能的Django应用程序已经很糟糕。这是我发现的一种方法,可以保留您的旧迁移历史记录并保留