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()

Как я могу преобразовать экземпляр 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.S.: Это уже развернутая система, в ней много данных и переделать всю концепцию наследования Партнер-Персона-Компания не представляется возможным.

7
задан Alexander 14 September 2010 в 17:05
поделиться