假设django中有以下类结构:
class Base(models.Model)
class Derived(Base)
这个基础对象(只是 Base ,而不是 Derived )
b = Base()
b.save()
我想从b创建派生对象。这是正确的方法吗?我试过了:
d = Derived(b)
d = Derived(base_ptr=b)
由于
注意:我认为这是一个不同的问题,而不是" 如何从模型库转到Django中的派生类?"因为我需要的是从现有的基础(并且只有基础)对象创建一个新的派生对象。在该问题中,它检查派生类是否已经存在然后返回它。就我而言,派生对象不存在。
答案 0 :(得分:2)
我想我找到了解决方案。我尝试的第二次尝试遇到了重置基础对象的所有字段的问题:
d = Derived(base_ptr=b)
d.save() # Resets all base fields of d
如Django model inheritance: create sub-instance of existing instance (downcast)?所述,这可以解决问题,虽然这不是最优雅的解决方案:
d = Derived(base_ptr=b)
d.__dict__.update(b.__dict__)
d.save()