我有几个类,例如Band
,,。每个都有字段(有时被称为)和,以及其他特定于类的字段。Album
Song
title
name
slug
我想使用 South 来将它们转换为一个公共基类的子类,Article
该基类将包含每个对象的title
and slug
。但是,我不确定 South 的数据迁移在我的情况下应该如何工作。你能帮我吗?
我有几个类,例如Band
,,。每个都有字段(有时被称为)和,以及其他特定于类的字段。Album
Song
title
name
slug
我想使用 South 来将它们转换为一个公共基类的子类,Article
该基类将包含每个对象的title
and slug
。但是,我不确定 South 的数据迁移在我的情况下应该如何工作。你能帮我吗?
您只需要考虑 South 将对您的模型做出的改变,并为此做好计划。
如果Article
是一个抽象类,South 将在很大程度上忽略它。也就是说,所有字段看起来都像是直接在模型上的字段,几乎就是您现在拥有的方式。因此,唯一会发生的变化是一个模型以前使用的地方name
,它现在也将有一个新title
字段。出于这个原因,您应该name
通过 schemamigration 保留附加的字段,然后创建一个 datamigration 以将其值移动到新title
字段,最后在另一个schemamigration 中将其删除。
如果Article
是一个标准的基类(多表继承),那么你所有的模型都会得到一个新OneToOneField
的 Article。同样,通过模式迁移保留模型上的所有字段,然后创建一个数据迁移,您将在其中运行每个字段,并Article
使用模型上的旧数据创建一个实例,并将该Article
实例分配给一对一的字段。然后,您可以删除另一个架构迁移中的旧字段。