首页 文章

Django South:从另一张 table 迁移FK

提问于
浏览
1

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

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 回答

  • 6

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

    • 创建新字段

    • (数据迁移)将数据从旧字段复制到新字段(可能带有转换)

    • 删除旧字段

    这样我可以使用来自南方的auto schemamigration进行第一次和第三次迁移,只需编写一些简单的转换代码 . 这与南方教程中的this example类似 .

相关问题