0

我们都喜欢 django 中的南迁移,通常您首先使用convert_to_south然后进行模型类更改,然后运行schemamigrationmigrate

我不确定以下情况是否发生在任何人身上,项目没有在版本控制下跟踪(git stash 会很棒),你改变了模型类并且丢失了撤消/重做历史,你意识到应用程序已经尚未皈依南方。有没有命令可以解决这个问题?

4

1 回答 1

1

这是一个想法……首先阅读此处的所有免责声明,例如支持哪些数据库来检测 FK。

https://docs.djangoproject.com/en/dev/ref/django-admin/#django-admin-inspectdb

更新:真正的答案是混合使用底部的两个想法。基本上,inspectdb 是一种很好的人类可读方式来找出模型和数据库之间的差异。然后,我会手动构建 alter table 语句来匹配。幸运的是,sqlall输出了创建语句,因此大部分内容将被剪切并粘贴到新字段中。

备份所有内容。

  1. 将您的 models.py 复制到某处。
  2. 输入python manage.py inspectdb
  3. 找到您要查找的模型并将其粘贴到原始 models.py 中
  4. 设在南边。
  5. 将新的/更新的 models.py 粘贴回您的 models.py
  6. 运行 schemamigration 然后迁移。

您也可以手动进行迁移,然后转换为南。

  1. python manage.py dbshell
  2. 描述表(取决于您的数据库)
  3. 查找丢失的行...根据需要使用 alter table 语句。(SQL 提示在python manage.py sqlall <myapp>
于 2013-06-05T23:05:56.823 回答