Использование Python's deepcopy для различных моделей django

У меня есть две разные модели django с большим количеством атрибутов, которые отличаются только 1 или 2 атрибутами. На основе некоторых условий я хочу прочитать одну строку из одной модели таблицы и записать в другую таблицу. На данный момент я читаю строку в объект, делаю deepcopy и затем изменяю имя класса с помощью python's __class__, чтобы данные других атрибутов сохранялись и я мог добавить детали других атрибутов. Причина этого в том, что атрибутов очень много, и ручного копирования каждого атрибута следует избегать, если это возможно.

Пример кода выглядит примерно так. Есть модель Program и модель ProgramRepository. Модель ProgramRepository имеет дополнительный атрибут owner

    program = get_object_or_404(Program,pk=id)
    new_program = copy.deepcopy(program)
    new_program.id = None
    new_program.__class__ = ProgramRepository
    new_program.owner = creator
    new_program.save()

Вызовет ли это какие-либо проблемы? Есть ли лучший способ сделать это?

Вы можете использовать множественное наследование в моделях Django, что является лучшим способом

class FieldProgrammer(models.Model):

    field1 = models.IntegerField()
    field2 = models.CharField() #etc
    class Meta:
        abstract=True #abstract class does not create a db table

class Programmer(FieldProgrammer):

    pass

class ProgramRepository(FieldProgrammer):

    owner = models.CharFiled()
Вернуться на верх