Django South:从另一张桌子迁移FK

dja*_*ser 1 python migration django django-south

我正在做一些系统,我的表设计是这样的:

Table A:
   - ID
   - ForeignKey(C)

Table B:
   - ID
   - ForeignKey(A)

Table C:
   - ID
Run Code Online (Sandbox Code Playgroud)

由于一些需求变化,我需要将ForeignKey(C)从A移动到B,所以它是这样的:

Table A:
    - ID

Table B:
    - ID
    - ForeignKey(A)
    - ForeignKey(C)

-Table C:
    - ID
Run Code Online (Sandbox Code Playgroud)

模式迁移很简单.但是上次我已经在表A中有一些现有的FK数据.我不能马上删除它.我需要将这个FK迁移到表B.B的结构和它的内部数据是不同的.当我将ForeignKey(C)添加到B的模型时,South要求我提供默认值,因为我没有提供任何默认值,并且它不允许NULL.选择是退出schemamigration并手动添加默认值或提供一次性值.

我的问题是,如何使用South?添加从表A中的现有数据导入的默认/ 1时间值.我正在寻找这个类似的问题,但没有运气:(

谢谢.

Mar*_*rau 6

在进行此类迁移时,我总是创建3次迁移:

  1. 创建新字段
  2. (数据迁移)将数据从旧字段复制到新字段(可能带有转换)
  3. 删除旧字段

这样我可以使用来自南方的auto schemamigration进行第一次和第三次迁移,只需编写一些简单的转换代码.这在南方教程中就像这个例子一样.