0Pricing
Python Academy · Lección

Modelos y migraciones

Defina y migre la base de datos

Modelos y migraciones es una lección gratuita de Python Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Python Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Python Academy incluye 4 lecciones en total.

Modelos de Django

Un modelo de Django es una clase de Python que define la estructura de una tabla de base de datos. Cada atributo es un campo. Los modelos se encuentran en el models.py de una app.

from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)
print('Post model defined')

Tipos de campos

Django proporciona muchos tipos de campos que se corresponden con tipos de columnas.

  • CharField para texto corto (requiere max_length)
  • TextField para texto largo
  • IntegerField, BooleanField, DateTimeField
from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)
    body = models.TextField()
    views = models.IntegerField(default=0)
print('Fields map to columns')

La clave primaria implícita

Django añade automáticamente a cada modelo una clave primaria id autoincremental, por lo que rara vez tendrá que declarar una usted mismo.

from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)
    # 'id' is added automatically
print('id field is automatic')

Opciones de los campos

Los campos aceptan opciones como default, null, blank y unique para controlar su comportamiento y validación.

from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200, unique=True)
    published = models.BooleanField(default=False)
    subtitle = models.CharField(max_length=200, blank=True)
print('Options refine each field')

Fechas

DateTimeField(auto_now_add=True) registra cuándo se crea una fila por primera vez. auto_now=True la actualiza cada vez que se guarda.

from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
print('Timestamps set automatically')

Relaciones

Relacione modelos con ForeignKey para establecer una relación de uno a muchos. on_delete indica a Django qué debe hacer cuando se elimina la fila referenciada.

from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=100)

class Post(models.Model):
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
print('ForeignKey links Post to Author')

¿Qué son las migraciones?

Las migraciones son el mecanismo de Django para convertir los cambios en los modelos en cambios en el esquema de la base de datos. Son el control de versiones de su base de datos.

# Migrations record schema changes over time
# so the database matches your models
print('Migrations track schema changes')

makemigrations

python manage.py makemigrations inspecciona sus modelos y genera archivos de migración que describen los cambios.

# python manage.py makemigrations
# -> blog/migrations/0001_initial.py
print('makemigrations writes migration files')

migrate

python manage.py migrate aplica las migraciones pendientes a la base de datos, creando o modificando tablas.

# python manage.py migrate
# -> Applying blog.0001_initial... OK
print('migrate applies changes to the DB')

Flujo de trabajo de las migraciones

El ciclo es el siguiente: edite models.py, ejecute makemigrations y después ejecute migrate. Repítalo cada vez que cambien sus modelos.

# 1. Change models.py
# 2. python manage.py makemigrations
# 3. python manage.py migrate
print('Edit, make, migrate')

Cómo consultar modelos

Cada modelo obtiene un manager llamado objects para realizar consultas: Post.objects.all(), .filter(), .get() y .create().

# Post.objects.all()
# Post.objects.filter(published=True)
# Post.objects.get(id=1)
# Post.objects.create(title='Hello')
print('objects is the query manager')

Comprobación rápida

Ponga a prueba sus conocimientos sobre migraciones.

Resumen

Ha definido modelos y los ha migrado.

  • Los modelos son clases en models.py con campos tipados
  • Django añade automáticamente una clave primaria id
  • ForeignKey relaciona modelos; on_delete establece el comportamiento de eliminación en cascada
  • makemigrations y después migrate sincronizan la base de datos
  • Model.objects consulta los datos

Preguntas frecuentes

¿La lección «Modelos y migraciones» es gratis?

Sí — el texto completo de «Modelos y migraciones» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Python Academy, actualiza a CoddyKit PRO. El curso de Python Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Modelos y migraciones»?

Defina y migre la base de datos Practicas Python Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Python Academy?

No se requiere experiencia previa. Python Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Modelos y migraciones»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Python Academy?

Sí. Cada lección de Python Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Proyectos y aplicaciones
  2. Modelos y migraciones
  3. Vistas y URL
  4. El administrador de Django
← Volver a Python Academy