层次结构随着Djangoclass的迁移而改变

2024-06-09 19:42:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我们使用django多态模型。在

最近,我们更改了这些模型的层次结构:

class A(PolymorphicModel):
    # foo
class B(A):
    # bar
class C(A):
    # baz

为此:

^{pr2}$

B中的所有字段都有一个默认值,因此理论上,有一种平滑的方法可以将现有数据迁移到新模式中。它需要在表B中创建行,并重新调整表C的基类列

但是,South要求C.b_id有一个一次性的值(对于向后迁移,C.a_id也需要一个值)。在

我知道南方不知道django多态性。另外,当我想在数据迁移中“只在B中添加一行”时,django polymorphic也会出现这种情况。在

在这种情况下,迁移数据最优雅的方法是什么?在


Tags: 数据django方法模型idfoo层次结构bar
1条回答
网友
1楼 · 发布于 2024-06-09 19:42:45

我找到的最佳解决方案是:

  1. 模式迁移:添加模型C_temp,它与C具有相同的字段,但从B派生
  2. 数据迁移:将所有数据从C复制到C\U temp。在

    对于C中的每个对象,通过复制所有字段(包括id)来创建一个新的C_temp。为B中的字段提供默认值

    这将在B中添加新行并将其与A中的现有行连接。

  3. 架构迁移:delete C.

  4. 架构迁移:将C\u temp重命名为C

相关问题 更多 >