Django realizando migraciones
Considere las siguientes tres clases:
class UUIDModel(models.Model):
id = models.UUIDField(primary_key=True, editable=False, default=uuid.uuid4)
class Meta:
abstract = True
class TimeStampedUUIDModel(UUIDModel):
created = models.DateTimeField(auto_now_add=True, editable=False)
modified = models.DateTimeField(auto_now=True, editable=False)
class Meta:
abstract = True
class UsefulClass(TimeStampedUUIDModel):
name = models.CharField(max_length=150, unique=True)
creator = models.ForeignKey('OtherClass', on_delete=models.SET_NULL, null=True)
Basado en estas clases, cuando ejecuto el comando makemigrations
, Django creará dos migraciones (en el primer ejecución). Una contiene los campos id
, created
, modified
y name
(!) y la segunda añade la clave foránea creator
.
¿Cuál podría ser la razón de la creación de dos migraciones en lugar de solo una?
davy.ai
La razón de la creación de dos migraciones en lugar de solo una es que
UsefulClass
hereda deTimeStampedUUIDModel
, que a su vez hereda deUUIDModel
. Cada una de estas clases abstractas tiene sus propios campos y tablas de base de datos, y cuando se creaUsefulClass
, todos estos campos se incluyen en la migración inicial. El campocreator
se agrega posteriormente, por lo que se incluye en una migración separada.