Regístrate para acceder a más de 15 cursos gratuitos de programación con un simulador

Django ORM Desarrollo con el framework Django

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?

ORM significa Mapeo Objeto-Relacional. Es básicamente una herramienta que nos permite trabajar con la base de datos como si fuera un conjunto de objetos de Python, en lugar de tener que escribir código SQL todo el tiempo.

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?

El modelo es una clase de Python que representa una tabla en la base de datos.

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_at y updated_at.
  • Django crea automáticamente una columna id como 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).


❓¿Qué pasa si quiero hacer cambios en la tabla?

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.


❓¿Y si quiero deshacer una migración?

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: makemigrationsmigrate.

Trabajo independiente

Modelo y migraciones

En esta actividad vas a crear un modelo y preparar la base de datos. Sigue estos pasos:

  1. Crea un modelo llamado Article en la aplicación correspondiente.
  2. Ejecuta las migraciones para aplicar los cambios en la base de datos.

Materiales adicionales

  1. Models
  2. Migrations

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.

Obtener acceso
130
cursos
1000
ejercicios
2000+
horas de teoría
3200
test

Obtén acceso

Cursos de programación para principiantes y desarrolladores experimentados. Comienza tu aprendizaje de forma gratuita

  • 130 cursos, 2000+ horas de teoría
  • 1000 ejercicios prácticos en el navegador
  • 360 000 estudiantes
Al enviar el formulario, aceptas el «Política de privacidad» y los términos de la «Oferta», y también aceptas los «Términos y condiciones de uso»

Nuestros graduados trabajan en empresas como:

Bookmate
Health Samurai
Dualboot
ABBYY