У меня следующая ситуация наследования нескольких таблиц:
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 one и наоборот?
Допустим, кто-то по ошибке создал экземпляр компании с подробностями этого человека:
company = Company(name="John Smith", tax_no="<some-ssn-#>")
Я хочу преобразовать все неправильные Company объекты (которые должны были быть людьми) в 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 .: Это уже развернутая система с большим количеством данных, и невозможно изменить всю концепцию наследования Партнер-Лицо-Компания.