Django模型继承 - 我可以更改模型类型吗?

时间:2009-09-09 10:37:21

标签: django django-models

当我使用多表继承时,Django创建了两个表 - 一个用于基类,一个用于派生的表,指向第一个。有没有办法在删除派生表时保留基表条目,并为另一个模型创建另一个条目?

更简单一点:我有模型:A,B(源自A),C(源自A)。我想将类型B的对象转换为类型C.复制不是一个好的解决方案,因为A用作一组项目,因此项目使用ForeignKey指向它。

2 个答案:

答案 0 :(得分:0)

没有内置方法可以做到这一点。如果你需要保留基表中的条目,因为FK指向它,你将不得不编写一些管理器方法来使用原始SQL来操作B和C表。

如果您使用的RDBMS不支持参照完整性,您可以只复制数据,删除B实例,并创建C实例,并将PK手动设置为B的PK。

答案 1 :(得分:0)

如果没有内置方式,那么我认为手动操作并不是那么糟糕 - 让c复制b,然后执行b.items.update(itemset=c)