我有几个课程,例如Band
,Album
,Song
。每个字段都包含字段title
(有时称为name
)和slug
字段,以及其他特定于类的字段。
我想使用South将它们转换为公共基类Article
的子项,其中包含每个对象的title
和slug
。但是,我不确定南方的数据迁移应该如何适用于我的情况;你能帮忙吗?
答案 0 :(得分:2)
你只需要考虑南方将对你的模型做出的改变,并为此做好计划。
如果Article
是一个抽象类,南方大部分都会忽视它。也就是说,所有字段看起来都像是直接在模型上的字段,就像现在的方式一样。因此,唯一会发生的变化是之前一个模型使用name
,现在它也会有一个新的title
字段。因此,您应该通过架构迁移保留name
字段,然后创建数据迁移以将其值移至新的title
字段,最后在另一个中将其删除schemamigration。
如果Article
是标准基类(多表继承),那么所有模型都将获得新的OneToOneField
条款。再次,通过模式迁移将所有字段保留在模型上,然后创建数据迁移,在其中运行每个字段并使用模型上的旧数据创建Article
实例并分配Article
实例到一对一的领域。然后,您可以删除另一个模式迁移中的旧字段。