Breves: Copiar una instancia de Model en Django

written by uve 25 August 2010

Una solución rápida para hacer una copia de un modelo es utilizar copy. copy es un módulo estándar de Python que nos permite realizar copias de objetos. Este módulo ofrece dos tipos de copias: shallow y deep.

La diferencia está en como se comporta con objetos compuestos, es decir, objetos que contienen otros objetos.

  • Copia shallow (o superficial): crea un nuevo objecto compuesto y trata de insertar, en la medida de lo posible, las referencias a los objetos encontradas en el objeto original
  • Copia deep (o profunda): crea un objeto compuesto nuevo y, de forma recursiva, realiza una copia de todos los objetos encontrados en el objeto original

from copy import deepcopy
obj_copy = deepcopy(obj)
obj_copy.pk = None
obj_copy.save()

Tags

La teoría es cuando crees saber algo, pero no funciona.
La práctica es cuando algo funciona, pero no sabes por qué.
Los programadores combinan la teoría y la práctica:
Nada funciona y no saben por qué.