2

使用该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

有人有答案吗?

4

1 回答 1

5

在多态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
于 2018-01-30T00:58:02.763 回答