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