gpt4 book ai didi

django - 如何复制 Django 多态对象?

转载 作者:行者123 更新时间:2023-12-02 00:38:08 25 4
gpt4 key购买 nike

使用 django-polymorpic 模块是简化对象继承的好方法,其中许多子类都继承自一个基类,并与其共享多个属性。但是虽然几乎所有的东西都像普通对象一样工作,但是清除 .pk 并调用 save() 的方法不起作用?我试过:

o = MyPolymorphicSubTable.objects.first()
print(o.pk) # 22
o.pk = None
o.save()
print(o.pk) # still 22 -- still the same object

也尝试过:

print(o.id) # 22
o.id = None
o.save()
print(o.id) # still 22

有人知道吗?

最佳答案

github 多态问题的一个老问题中有一个答案的提示,终于找到了答案。对象的 ID (22) 存储为 .id(基表 ID)和 .basetablename_ptr(在我的例子中为“sectioninfo_ptr”)——后者不可设置,但 .pk 引用相同的字段,并且可设置的,因此需要将这两种方法结合起来:

o = MyPolymorphicSubTable.objects.first()
print(o.pk) # 22
o.pk = None
o.id = None # both this and the previous line need to be there
o.save()
print(o.pk) # 434
print(o.id) # 434

关于django - 如何复制 Django 多态对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48512348/

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