Skip to main content
 首页 » 编程设计

python之Django 南 : Migrating FK from another table

2025年05月04日30del

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

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 并手动添加默认值或提供 1 次值。

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

谢谢。

请您参考如下方法:

在进行这种类型的迁移时,我总是创建 3 个迁移:

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

这样我就可以在第一次和第三次迁移中使用来自南方的自动模式迁移,而只需要编写一些简单的转换代码。这就像 this example在南方教程中。