Django South: 从另一张表迁移外键
我在做一个系统,表的设计是这样的:
Table A:
- ID
- ForeignKey(C)
Table B:
- ID
- ForeignKey(A)
Table C:
- ID
由于一些需求的变化,我需要把外键(C)从表A移动到表B,所以变成这样:
Table A:
- ID
Table B:
- ID
- ForeignKey(A)
- ForeignKey(C)
-Table C:
- ID
这个表结构的迁移很简单。但是上次我在表A里已经有了一些现存的外键数据,我不能直接删除这些数据。我需要把这些外键迁移到表B。表B的结构和里面的数据都不一样。当我在表B的模型中添加外键(C)时,South工具要求我提供一个默认值,因为我没有提供默认值,而且它不允许为空。我的选择是退出结构迁移,手动添加默认值,或者提供一个一次性的值。
我的问题是,如何使用South工具从表A中导入现有数据并添加默认值或一次性值呢?我搜索了类似的问题,但没有找到解决办法 :(
谢谢。
1 个回答
6
在进行这种类型的迁移时,我通常会创建三个步骤:
- 创建一个新字段
- (数据迁移)将旧字段的数据复制到新字段中(可能会进行一些转换)
- 删除旧字段
这样,我可以利用South工具的自动迁移功能来处理第一步和第三步,只需要写一些简单的转换代码。这就像在South教程中的这个例子一样。