假设您编写了一个Django网站并使用git来管理源代码。您的网站有各种各样的实例(至少每个开发者一个)。
当您在提交中对模型执行更改时,每个人都需要更新自己的数据库。在某些情况下,运行python manage.py migrate
就足够了,在其他一些情况下,您需要运行一些自定义SQL查询和/或运行一些Python代码来更新各个位置的值。
如何实现自动化?是否有一种干净的方式来捆绑这些"模型更新" (例如,在相关提交中执行相应操作的小shell脚本)?我已经考虑过使用git hooks了,但是随着时间的推移,运行的代码会发生变化,我不清楚如何将它们用于此目的。
答案 0 :(得分:4)
All changes to models should be in migrations. If you "need to run a few custom SQL queries and/or run some Python code to update values" then those are migrations too, and should be written in a migration file.
答案 1 :(得分:1)
如果您跟踪/migrations
,则可以按照doc
这样,同事只需运行migrate
即可执行查询
答案 2 :(得分:1)
您应该跟踪迁移。你唯一需要留意的是分支合并。如果每个人都使用功能分支并在其分支上进行开发,则在集成分支后应用更改。此时(拉取请求时间或集成时间),您需要确保迁移有意义,如果没有修复它们。
答案 3 :(得分:0)