es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    La razón de la creación de dos migraciones en lugar de solo una es que UsefulClass hereda de TimeStampedUUIDModel, que a su vez hereda de UUIDModel. Cada una de estas clases abstractas tiene sus propios campos y tablas de base de datos, y cuando se crea UsefulClass, todos estos campos se incluyen en la migración inicial. El campo creator se agrega posteriormente, por lo que se incluye en una migración separada.

Comments are closed.