如何禁用自动命名的Django迁移

如何禁用自动命名的Django迁移

本文主要介绍如何在Django执行makemigrations时完成文件的命名

当你运行Django的manage.py makemigrations时,它将根据迁移的内容为迁移生成一个名称。例如,如果你是在添加单个字段,它会将迁移命名为0002_mymodel_myfield.py。但是,当你的迁移中包含不止一步操作时,它将使用一个简单的‘auto’和当前日期+时间进行命名,例如,0002_auto_20200113_1837.py。你可以为makemigrations提供-n/–name参数,但是开发人员经常会忘记这一点。

命名是编程中一个众所周知的难题。管理这些具有自动名称的迁移会很困难: 如果不打开它们,你就无法分辨哪个是哪个,而且如果它们是在同一天生成的,它们就会有相同的名称,那你就可能会混淆它们。

这在以下情况中会非常令人头疼:

  • 变基分支
  • 挖掘历史记录
  • 部署到生产环境

在最坏的情况下,运行错误的迁移可能会导致数据丢失!
我们还很容易忘记修改迁移名称和提交,因为Django不会提示你输入一个更好的名称。我们可以通过一些自动化措施来防范这种情况!

让我们来看看实现这一点的三种技术。

  1. 重写makemigrations以要求提供 -n/–name
    这个方法使用了重写内置管理命令的技术,这与我在文章《让Django测试总是重新构建数据库(如果它存在的话)》中使用的技术相同。

在你的项目的“核心”应用程序中添加一个新的makemigrations命令(例如:myapp/management/commands/makemigrations.py),内容如下:

本文标题:如何禁用自动命名的Django迁移

文章作者:shuke

发布时间:2020年04月20日 - 14:04

最后更新:2020年04月20日 - 14:04

原始链接:https://shuke163.github.io/2020/04/20/%E5%A6%82%E4%BD%95%E7%A6%81%E7%94%A8%E8%87%AA%E5%8A%A8%E5%91%BD%E5%90%8D%E7%9A%84Django%E8%BF%81%E7%A7%BB/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------本文结束感谢您的阅读-------------

本文标题:如何禁用自动命名的Django迁移

文章作者:shuke

发布时间:2020年04月20日 - 14:04

最后更新:2020年04月20日 - 14:04

原始链接:https://shuke163.github.io/2020/04/20/%E5%A6%82%E4%BD%95%E7%A6%81%E7%94%A8%E8%87%AA%E5%8A%A8%E5%91%BD%E5%90%8D%E7%9A%84Django%E8%BF%81%E7%A7%BB/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%