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.
CharFieldpara texto corto (requieremax_length)TextFieldpara texto largoIntegerField,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.pycon campos tipados - Django añade automáticamente una clave primaria
id ForeignKeyrelaciona modelos;on_deleteestablece el comportamiento de eliminación en cascadamakemigrationsy despuésmigratesincronizan la base de datosModel.objectsconsulta 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
- Proyectos y aplicaciones
- Modelos y migraciones
- Vistas y URL
- El administrador de Django