【发布时间】:2015-08-01 15:18:29
【问题描述】:
我有两个模型类 Base 和 Derived(继承自 Base),Base 是抽象的。现在我意识到 Base 应该是具体的。如何创建为我进行切换的迁移?
目前对我来说主要问题是派生表中需要的 base_ptr_id 列,这是一个主键。必须添加此列并接收指向表 Base 中相应行的正确值。目前我正在做这些迁移操作:
- 创建模型库
- 使用 RunSQL 将数据从派生表复制到基表。
- 将 OneToOneField base_ptr 添加到 Derived with primary_key=False
- 使用 RunSQL 将 id 复制到 base_ptr_id 列中
- 从 Derived 中删除 id 列
- 将 OneToOneField base_ptr 更改为 primary_key
- 从 Derived 中删除所有其他继承的字段
目前该过程在第 3 步失败。看起来 Django 仍然创建了一个主键列 base_ptr_id,但由于现有行将具有相同的默认值而失败。
那我该怎么办?
【问题讨论】: