1

我有几个类,例如Band,,。每个都有字段(有时被称为)和,以及其他特定于类的字段。AlbumSongtitlenameslug

我想使用 South 来将它们转换为一个公共基类的子类,Article该基类将包含每个对象的titleand slug。但是,我不确定 South 的数据迁移在我的情况下应该如何工作。你能帮我吗?

4

1 回答 1

2

您只需要考虑 South 将对您的模型做出的改变,并为此做好计划。

如果Article是一个抽象类,South 将在很大程度上忽略它。也就是说,所有字段看起来都像是直接在模型上的字段,几乎就是您现在拥有的方式。因此,唯一会发生的变化是一个模型以前使用的地方name,它现在也将有一个新title字段。出于这个原因,您应该name通过 schemamigration 保留附加的字段,然后创建一个 datamigration 以将其值移动到新title字段,最后在另一个schemamigration 中将其删除。

如果Article是一个标准的基类(多表继承),那么你所有的模型都会得到一个新OneToOneField的 Article。同样,通过模式迁移保留模型上的所有字段,然后创建一个数据迁移,您将在其中运行每个字段,并Article使用模型上的旧数据创建一个实例,并将该Article实例分配给一对一的字段。然后,您可以删除另一个架构迁移中的旧字段。

于 2012-05-24T17:03:00.040 回答