django中migrate命令的解释

Explaination about migrate command in django

谁能解释一下,django 中的迁移是如何发生的? 实际上我想要“./manage.py migrate”命令的完整后端程序

作者在"django under the hood"会议上解释过一次。我有一个总结:http://reinout.vanrees.org/weblog/2014/11/14/2migrations.html

它的工作方式是将所有操作分割成微小的依赖项。必须创建的每个单独字段都变成了一个微小的依赖步骤。在将步骤列表排序(通过 dependency-resolving 循环)为正确的步骤列表后,优化器遍历该列表并对其进行优化。例如,如果模型被创建和删除,则无需执行任何操作。

拼图的最后一部分是图表。它在内存中构建所有基本迁移的有向图。为此,它需要读取磁盘上的所有模型。它还在数据库中查找。那里有一个 table 标记已应用了哪些迁移(或者更确切地说:迁移图中的节点)。

如果您想查看代码,这里有一些提示:

  • django/db/migrations/autodetector.py,从 _detect_changes()
  • 开始
  • django/db/migrations/optimizer.py,从 reduce()
  • 开始
  • django/db/migrations/graph.py
  • django/db/migrations/loader.py