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

3
当我使用多表继承时,Django会创建两个表——一个是基类的表,另一个是指向第一个表的派生类表。是否有一种方法可以在删除派生表的同时保留基础表条目,并为另一个模型创建另一个条目?
简单来说,我有模型:A、B(从A派生),C(从A派生)。我想将类型为B的对象转换为类型为C的对象。复制不是一个好的解决方案,因为A作为一组项目,所以项目用ForeignKey指向它。
2个回答

0

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

如果您正在使用不支持引用完整性的RDBMS,则可以尝试复制数据,删除B实例,并创建C实例,其PK手动设置为B的PK。


MySQL现在已经支持引用完整性超过5年,只要使用InnoDB作为引擎(即大多数现代生产安装)。 - Adam Nelson
我知道,只是想要表达一下 :-) - Carl Meyer

0
如果没有内置的方法,那么我认为手动操作也不错——将 c 复制为 b ,然后执行 b.items.update(itemset=c)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接