django migration 高级用法
type
status
date
slug
summary
tags
category
icon
password
最近对于 django 的 migration 迁移因为有不一般的需求,于是搜集了一下不常见的使用场景。

情景一

项目丢失 django migration历史记录,django 的 models 与数据库表结构不一致。
这种情况下,数据库的django migration表只能提供有限参考,如果从django migration表的最后一条记录开始手动重建migrate,需要挨个比较每个model与数据库表的差异,然后在空白migrate文件里写入对应的操作,最后执行 python manage.py migrate someapp 000X ,一般来说成功更新就说明续上了,后续开发直接走make migation → migrate的流程就行了
 

情景二

项目缺少 migration 文件,但是 models 与当前数据库一致。
这种情况需要从头开始重建migration文件,一般来说,可以考虑只生成两个文件,0001和0002,0001对应model现状,即一系列表的创建命令,0002作为当前你要增加的修改。对于每个app,首先对0001 执行 python manage.py migrate someapp 0001 —fake, 这代表更新model到0001的状态但是不实际执行,运行完这个命令后,你的数据库和model应该是一致的,相当于把历史的各个migrate记录压缩到了0001migration里
 
Black的替代者?Ruff的使用教程git stash 与 git worktree 切换分支方式
  • Giscus
  • Utterance