当我使用多表继承时,Django创建了两个表 - 一个用于基类,一个用于派生的表,指向第一个。有没有办法在删除派生表时保留基表条目,并为另一个模型创建另一个条目?
更简单一点:我有模型:A,B(源自A),C(源自A)。我想将类型B的对象转换为类型C.复制不是一个好的解决方案,因为A用作一组项目,因此项目使用ForeignKey指向它。
答案 0 :(得分:0)
没有内置方法可以做到这一点。如果你需要保留基表中的条目,因为FK指向它,你将不得不编写一些管理器方法来使用原始SQL来操作B和C表。
如果您使用的RDBMS不支持参照完整性,您可以只复制数据,删除B实例,并创建C实例,并将PK手动设置为B的PK。
答案 1 :(得分:0)
如果没有内置方式,那么我认为手动操作并不是那么糟糕 - 让c
复制b
,然后执行b.items.update(itemset=c)
。