【发布时间】:2010-09-14 17:05:47
【问题描述】:
我的多表继承情况如下:
from django.db import Models
class Partner(models.Model):
# this model contains common data for companies and persons
code = models.CharField()
name = models.CharField()
class Person(Partner):
# some person-specific data
ssn = models.CharField()
class Company(Partner):
# some company-specific data
tax_no = models.CharField()
如何将 Company 实例转换为 Person 实例,反之亦然?
假设有人错误地使用人员的详细信息创建了 Company 实例:
company = Company(name="John Smith", tax_no="<some-ssn-#>")
我想将所有错误的 Company 对象(本来应该是 Persons)转换为 Person 对象,保留所有相关记录(我有带有 FK 的模型到 Partner 模型,因此保持相同的 partner_ptr 值很重要)。我可以这样做:
person = Person(name=company.name, ssn=company.tax_no, partner_ptr=company.partner_ptr)
到目前为止一切顺利,但是否可以删除不再需要的 Company 对象?删除 Company 对象也会删除其父 Partner 对象(以及与合作伙伴相关的任何对象,包括新创建的 Person 对象)。 p>
有什么建议吗?谢谢!
P.S.:这是一个已经部署好的系统,里面有很多数据,不可能重新设计整个 Partner-Person-Company 继承概念。
【问题讨论】:
标签: python django multiple-inheritance