使用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
任何人都有答案?
答案 0 :(得分:2)
在一个关于多态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