- ¿Qué es un ORM?
- Django ORM: El punto medio
- ¿Qué es un Modelo?
- ¿Cómo se conecta Django con la base de datos?
- ¿Cómo crear una tabla a partir de un modelo?
En esta lección explorarás cómo Django se conecta y trabaja con bases de datos usando su ORM.
Verás, paso a paso, cómo funciona el ORM en Django, qué son los modelos y las migraciones, y cómo usarlos para interactuar con la base de datos de manera sencilla. Al final, tendrás una comprensión clara para manejar datos en el proyecto.
¿Qué es un ORM?
Imagina que tienes una tabla llamada usuarios con datos de personas. En vez de andar escribiendo SELECT * FROM usuarios WHERE edad > 18, simplemente haces algo como:
Usuario.objects.filter(edad__gt=18)
Eso es trabajar con ORM. Uno le habla al modelo Python y Django se encarga de transformar eso en una consulta SQL.
¿Por qué es útil?
- Es más fácil de leer y escribir (especialmente si vienes de Python).
- Te permite cambiar de base de datos sin reescribir todas las consultas.
- Los errores son más fáciles de encontrar.
Django ORM: El punto medio
Diferentes ORMs se comportan distinto. Algunos ocultan completamente la base de datos, otros requieren que uno siga escribiendo consultas SQL. Django está en el punto medio: te deja trabajar con objetos, pero también te permite escribir consultas más avanzadas si lo necesitas.
Eso nos da lo mejor de los dos mundos: facilidad y flexibilidad.
¿Qué es un Modelo?
Imagina el siguiente ejemplo:
from django.db import models
class Article(models.Model):
name = models.CharField(max_length=200) # título del artículo
body = models.TextField() # contenido
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
¿Qué hace esta clase?
- Crea una tabla en la base de datos (llamada
article_article). - Define cuatro columnas o campos:
name,body,created_atyupdated_at. - Django crea automáticamente una columna
idcomo identificador único.
Estas clases normalmente se definen en el archivo models.py dentro de cada aplicación Django.
Ejemplos de modelos comunes en una plataforma educativa:
| Modelo | Descripción |
|---|---|
| Usuario | Un usuario registrado en la plataforma |
| Curso | Una clase o programa de estudio |
| Lección | Un tema específico dentro de un curso |
| Ejercicio | Una actividad práctica |
| Comentario | Opiniones o preguntas de los usuarios |
| Artículo | Entrada de blog o contenido informativo |
¿Cómo se conecta Django con la base de datos?
Django usa algo llamado “Database Engine” para saber qué tipo de base de datos estás utilizando. Lo configura en el archivo settings.py dentro del diccionario DATABASES.
Por ejemplo:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3', # Motor: SQLite
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), # Archivo de la BD
}
}
Explicación de las claves:
ENGINE: motor de base de datos (puede ser PostgreSQL, MySQL, etc.)NAME: nombre de la base de datos (para SQLite es un archivo físico)default: nombre que Django usa para referirse por defecto a esta base
¿Cómo crear una tabla a partir de un modelo?
Cuando defines una clase como Article, todavía no existe la tabla en la base de datos. Tienes que generar y aplicar migraciones, que son instrucciones que indican cómo modificar la estructura de la base.
Pasos para crear la tabla:
1. Crear una migración
python manage.py makemigrations
Esto genera un archivo de migración (por ejemplo, 0001_initial.py) que describe lo que cambió (crear tabla Article).
2. Ver la migración en SQL
Si tienes curiosidad por ver la consulta SQL que va a ejecutarse:
python manage.py sqlmigrate article 0001
Ejemplo de salida:
CREATE TABLE "article_article" (
"id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
"name" varchar(200) NOT NULL,
"body" text NOT NULL,
"created_at" datetime NOT NULL,
"updated_at" datetime NOT NULL
);
3. Aplicar la migración
Esto ya crea la tabla en tu base de datos:
python manage.py migrate
Si es la primera vez que ejecutas migrate, Django también creará otras tablas necesarias internamente (como para usuarios).
Digamos que quieres agregar un campo nuevo o cambiar el tipo de dato. Solo modificas el modelo en models.py, y luego haces nuevamente:
python manage.py makemigrations
python manage.py migrate
Django se encarga de actualizar la estructura de la base de datos según los cambios que hiciste.
A veces necesitas volver atrás. Por ejemplo, para pruebas o si te equivocaste. Django también permite controlar la versión de migración a la que quieres volver:
# Volver a un punto anterior
python manage.py migrate article 0005
# Eliminar todas las migraciones para un app
python manage.py migrate article zero
⚠️ Cuidado: algunas migraciones no se pueden deshacer si son irreversibles (como eliminar columnas con datos).
Resumen
- El ORM te permite trabajar con la base de datos usando clases y objetos de Python en vez de escribir SQL.
- El modelo representa una tabla y se define en
models.py. - Django actualiza la base usando
migraciones, que describen cómo cambiar la estructura de la base. - Los pasos para actualizar la base son:
makemigrations→migrate.
Trabajo independiente
Modelo y migraciones
En esta actividad vas a crear un modelo y preparar la base de datos. Sigue estos pasos:
- Crea un modelo llamado Article en la aplicación correspondiente.
- Ejecuta las migraciones para aplicar los cambios en la base de datos.
Materiales adicionales
Para acceder completo a curso necesitas un plan básico
El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.