【问题标题】:How to track Django model changes with git?如何使用 git 跟踪 Django 模型更改?
【发布时间】:2015-06-05 14:51:17
【问题描述】:

假设你写了一个 Django 网站并使用 git 来管理源代码。您的网站有各种实例(至少每个开发者一个)。

当您在提交中对模型执行更改时,每个人都需要更新自己的数据库。在某些情况下,运行 python manage.py migrate 就足够了,在其他情况下,您需要运行一些自定义 SQL 查询和/或运行一些 Python 代码来更新各个位置的值。

如何自动化?是否有一种干净的方法可以将这些“模型更新”(例如执行适当操作的小型 shell 脚本)捆绑到相关的提交中?我曾考虑过为此使用 git 挂钩,但随着要运行的代码随着时间的推移而发生变化,我不清楚如何将它们用于此目的。

【问题讨论】:

  • 我认为跟踪/migrations文件夹不是一个好主意,我认为每个开发人员都应该将其保留在本地。因此,如果您不跟踪迁移,当 models 发生变化时,您应该运行 python manage makemigrationspython manage migrate
  • @Gocht 不,不,不。迁移是代码库的一部分,必须保存在源代码管理中。
  • @DanielRoseman 在这件事上是绝对正确的。每个开发人员都保留本地迁移副本是灾难的完美配方

标签: python sql django git workflow


【解决方案1】:

所有模型更改都应该在迁移中。如果您“需要运行一些自定义 SQL 查询和/或运行一些 Python 代码来更新值”,那么这些也是迁移,应该写入迁移文件中。

【讨论】:

    【解决方案2】:

    如果您跟踪/migrations,您可以按照doc 中的说明创建/修改迁移文件

    这样,同事只需运行migrate 即可执行查询

    【讨论】:

      【解决方案3】:

      您应该跟踪迁移。唯一需要注意的是分支合并。如果每个人都使用一个特性分支并在他的分支上进行开发,那么一旦分支被集成,这些更改就会被应用。此时(拉取请求时间或集成时间),您需要确保迁移有意义,如果没有修复它们。

      【讨论】:

        【解决方案4】:

        您应该会看到任何数据库重构工具,例如 liquibase,这样您就可以对数据库更改进行源代码控制。这是python的wrapper

        【讨论】:

          猜你喜欢
          • 2017-07-14
          • 2011-01-21
          • 2020-07-31
          • 1970-01-01
          • 1970-01-01
          • 2015-07-31
          • 1970-01-01
          • 2016-08-09
          • 1970-01-01
          相关资源
          最近更新 更多