我正在做一些系统,我的表设计是这样的:
Table A:
- ID
- ForeignKey(C)
Table B:
- ID
- ForeignKey(A)
Table C:
- ID
由于一些需求变化,我需要将ForeignKey(C)从A移动到B,所以它是这样的:
Table A:
- ID
Table B:
- ID
- ForeignKey(A)
- ForeignKey(C)
-Table C:
- ID
模式迁移很简单 . 但是上次我已经在表A中有一些现有的FK数据 . 我不能马上删除它 . 我需要将这个FK迁移到表B.B的结构和它的内部数据是不同的 . 当我将ForeignKey(C)添加到B的模型时,South要求我提供默认值,因为我没有提供任何默认值,并且它不允许NULL . 选择是退出schemamigration并手动添加默认值或提供一次性值 .
我的问题是,如何使用South?添加从表A中的现有数据导入的默认/ 1时间值 . 我正在寻找这个类似的问题,但没有运气:(
谢谢 .
1 回答
在进行此类迁移时,我总是创建3次迁移:
创建新字段
(数据迁移)将数据从旧字段复制到新字段(可能带有转换)
删除旧字段
这样我可以使用来自南方的auto schemamigration进行第一次和第三次迁移,只需编写一些简单的转换代码 . 这与南方教程中的this example类似 .