2012-05-24 27 views
1

我有几个类,例如, BandAlbumSong。每个字段都有title(有时也称为name)和slug以及其他特定于类的字段。Django/South:将不同的类迁移到公共基类

我想使用South来将它们转换为共同基类Article的子元素,其中包含每个对象的titleslug。但是,我不确定南方的数据迁移应该如何运作在我的案例中;你能帮我吗?

回答

2

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

如果Article是一个抽象类,南方大多数人会忽视它。也就是说,所有的字段看起来好像是直接在模型上的字段,几乎和现在一样。因此,唯一会发生的变化是之前使用name的一个模型,现在也会有一个新的title字段。因此,您应该通过schemamigration离开name字段,然后创建一个datamigration,将其值移至新的title字段,最后在另一个 schemamigration中将其删除。

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

+0

有道理,谢谢!正如我正在写这篇文章,我正在摔跤我的数据库提交。让我们看看我得到了多少... – egasimus

相关问题