gpt4 book ai didi

django - 从现有基础对象(未派生)创建新的派生对象

转载 作者:行者123 更新时间:2023-12-01 13:41:11 24 4
gpt4 key购买 nike

假设django中有以下类结构:

class Base(models.Model)
class Derived(Base)

而这个基础对象( 只是基础,不是派生的 )
b = Base()
b.save()

我想从 b 创建一个派生对象。这样做的正确方法是什么?我试过了:
d = Derived(b)
d = Derived(base_ptr=b)

谢谢

注意:我认为这是一个与“ 如何从模型基类转到 Django 中的派生类?”不同的问题,因为我需要的是从现有基类(并且只有基类)创建一个新的派生对象) 目的。在那个问题中,它检查派生类是否已经存在,然后返回它。就我而言,派生对象不存在。

最佳答案

我想我找到了解决方案。我尝试的第二次尝试遇到了问题,它重置了基础对象的所有字段:

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()

关于django - 从现有基础对象(未派生)创建新的派生对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40084205/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com