【问题标题】:How to copy a Django Polymorphic object?如何复制 Django 多态对象?
【发布时间】:2018-07-08 19:16:23
【问题描述】:

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

谁有答案?

【问题讨论】:

    标签: django django-polymorphic


    【解决方案1】:

    在多态github问题上的一个老issue里有提示,终于找到答案了。对象的 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-06
      • 2011-07-06
      • 1970-01-01
      • 2018-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多