小编Ale*_*der的帖子

Django - 删除对象,保留父级?

我有以下多表继承情况:

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()
Run Code Online (Sandbox Code Playgroud)

如何将Company实例转换为Person 1,反之亦然?
假设有人错误地使用人员的详细信息创建了公司实例:

company = Company(name="John Smith", tax_no="<some-ssn-#>")
Run Code Online (Sandbox Code Playgroud)

我想将所有错误的Company对象(本来是人员)转换为Person对象,保留所有相关记录(我将具有FK的模型转换为Partner模型,因此保持相同的partner_ptr值非常重要).我可以这样做:

person = Person(name=company.name, ssn=company.tax_no, partner_ptr=company.partner_ptr)
Run Code Online (Sandbox Code Playgroud)

到目前为止一切顺利,但是有可能删除不再需要的公司对象吗?删除Company对象也将删除它的父Partner对象(以及与伙伴相关的任何对象,包括新创建的Person对象).

有什么建议?谢谢!

PS:这是一个已部署的系统,其中包含大量数据,无法重新设计整个Partner-Person-Company继承概念.

python django multiple-inheritance

7
推荐指数
1
解决办法
1590
查看次数

标签 统计

django ×1

multiple-inheritance ×1

python ×1