python - Django 南 : Migrating FK from another table

标签 python django migration django-south

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

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在南方教程中。

关于python - Django 南 : Migrating FK from another table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6646659/

相关文章:

python - 如何将通过 HTTP POST 接收的数据从 Python Flask 脚本传递到单独的 Python 脚本进行处理?

python - 索引 0 超出了大小为 0 的轴 0 的范围

python - 在 virtualenv Ubuntu 12.10 中使用 pip 安装 lxml 错误 : command 'gcc' failed with exit status 4

unit-testing - Yii:如何在测试数据库上执行数据库迁移?

python - 为 mysql、python 和 django 修改 DYLD_LIBRARY_PATH

Python:os.isfile() 和 os.listdir() 之间的分歧

python - 您最喜欢在 django 中管理数据库迁移的解决方案是什么?

regex - Django urlpatterns 令人沮丧的斜杠问题

mysql - 使用未知数据类型 FLOAT

django - 如何在 django 1.5 中进行应用程序迁移