Mic*_*ert 2 django django-polymorphic
使用该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
Run Code Online (Sandbox Code Playgroud)
还尝试过:
print(o.id) # 22
o.id = None
o.save()
print(o.id) # still 22
Run Code Online (Sandbox Code Playgroud)
有人有答案吗?
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
308 次 |
| 最近记录: |