最佳答案
我已经使用 Django 两年了,有一个特性我一直害怕使用: < strong > 伪造迁移 。
我几乎到处都找过了,我能得到的最多的信息来自 文件,它说:
假的
告诉 Django 将迁移标记为已应用或 未应用,但没有实际运行 SQL 来更改您的 数据库模式。
这是为高级用户设计的,用于操作当前 如果它们手动应用更改,则直接进行迁移状态; 警告说,使用假冒伪劣产品有将移民国家 表进入一个状态,将需要手动恢复,使 迁移运行正确。
名字缩写是假的
允许 Django 跳过应用程序的初始迁移,如果所有数据库 表,其中包含由所有 CreateModel 创建的所有模型的名称 该迁移中的操作已经存在。此选项的目的是 对数据库进行第一次迁移时使用 预先存在迁移的使用。但是,这个选项不检查 除了匹配表名之外,还可以匹配数据库模式 只有当您确信您现有的模式是安全的时候才可以使用 与初始迁移中记录的内容相匹配。
我大致了解了为什么要使用这个特性。但是,我不明白为什么说这是 仅供高级用户使用
谁能解释一下幕后发生了什么以及为什么需要人工恢复。
注意:
我不是在寻找伪造迁移时运行的准确的原始 SQL 查询。我只是在寻找幕后发生了什么的大概概念,也许还有一个例子来说明为什么要伪造迁移
将导致 makemigrations
无法正常工作的状态。