Django / South:将不同的类迁移到公共基类

时间:2012-05-24 16:41:49

标签: django django-south

我有几个课程,例如BandAlbumSong。每个字段都包含字段title(有时称为name)和slug字段,以及其他特定于类的字段。

我想使用South将它们转换为公共基类Article的子项,其中包含每个对象的titleslug。但是,我不确定南方的数据迁移应该如何适用于我的情况;你能帮忙吗?

1 个答案:

答案 0 :(得分:2)

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

如果Article是一个抽象类,南方大部分都会忽视它。也就是说,所有字段看起来都像是直接在模型上的字段,就像现在的方式一样。因此,唯一会发生的变化是之前一个模型使用name,现在它也会有一个新的title字段。因此,您应该通过架构迁移保留name字段,然后创建数据迁移以将其值移至新的title字段,最后在另一个中将其删除schemamigration。

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