【问题标题】:How to upgrade django project multiple versions (1.8 to 1.11+)?如何升级 django 项目多个版本(1.8 到 1.11+)?
【发布时间】:2018-09-14 03:02:42
【问题描述】:

我正在将一个在 Django 1.8 上运行的旧项目升级到至少用于 LTS 的 Django 1.11。我听说升级 django 项目的多个版本可能很困难且令人沮丧。我没有这样做,所以我的问题;每个版本进行升级会更好吗,1.8 -> 1.9 -> 1.10 -> 1.11。或者你建议我直接从 1.8 升级到 1.11。请留下您对这一点以及我在升级时需要记住的其他事项的最佳想法。

提前致谢

【问题讨论】:

  • 每个版本升级会更容易
  • 我今天就是这样做的,没有问题。从 1.8 到 1.11 的直接方式(但我有可能在开始之前拍摄快照)。如果你害怕它......做每一步。
  • 首先,确保您的项目在 Django 1.8 without deprecation warnings 中运行。理论上,如果可以,那么它应该可以与 Django 1.11 一起使用。在实践中,您可能会发现您必须升级其他应用并因此而做出更改。
  • 确实,我认为项目中安装的应用程序在升级时会出现大多数问题。

标签: python django upgrade django-1.8 django-1.11


【解决方案1】:

从 1.8 到 1.11 并没有那么远。我以前更新过这样的版本,我很少遇到问题。通常我遇到的问题大部分时间都与Django无关,因为项目中使用的一些库需要更新以及我们更新Django

【讨论】:

    【解决方案2】:

    升级可能很困难,取决于您的情况。

    首先,检查每个版本的变更日志。这里的目标是了解是否有可能影响您的代码的重大更改。例如,外部字段模型中的on_delete 参数是可选的,现在是必需的。

    如果您发现了什么,只需更新您的代码。 真正能产生差异的是测试的存在。当我们从 python2 迁移到 python3 和 django 1.7 到 1.11 时,测试是我们的保险。

    我们刚刚开始使用带有新 python 和新 django 的 virtualenv 将我们的代码升级到不同的分支,并且只是修复、测试然后合并到开发中。如果您没有测试,也许是编写其中一些测试的合适时机。

    我不建议你直接跳到 django 2.0。同样,如果您有测试,您可以逐步更新,然后检查deprecation warnings。这些对于为下一个版本准备代码非常有帮助。

    更新

    在此过程中,我们检查我们的要求并修改我们系统中的每个包以验证兼容性。我们清理了一些软件包并更新了一些其他软件包。同样,如果你有测试,你就有保险:-)

    结论

    • 检查更新日志
    • 使用单独的分支

    然后:

    1. 逐步更新(例如从 1.7 到 1.8)
    2. (编写和)运行测试
    3. 更新您的代码/包
    4. 运行测试
    5. 如果一切正常,则合并回来 正在开发中
    6. 再次分支并返回 1

    【讨论】:

    • 感谢您的清晰解释。特别是更新包会很困难,所以我喜欢你建议的方法。
    • @karim 我正面临on_delete 问题。但是,我的主要问题是我对模型进行了更改,并将 on_delete 属性包含到 ForeignKey 字段。但是,它不被识别为与迁移相关,因此当我调用 makemigrations 时,我的迁移并没有改变。我该怎么办?更改我包含的迁移并修改它?例如,它不会影响旧数据库。有什么建议吗?我怎样才能避免这个问题?问候
    • 好吧,基于 Django 文档:docs.djangoproject.com/en/2.1/releases/1.9/… 您应该: ``` 更新模型和现有迁移以显式设置参数。由于默认值为 models.CASCADE,因此将 on_delete=models.CASCADE 添加到所有不使用不同选项的 ForeignKey 和 OneToOneFields。如果您不关心与旧版本 Django 的兼容性,也可以将其作为第二个位置参数传递。 ``` 所以,是的,你应该更新以前的迁移!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 2019-02-27
    • 2018-08-20
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多