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

Trabajo con modelos Desarrollo con el framework Django

Vamos a hablar del corazón de cualquier aplicación en Django: el modelo. Ya estás familiarizado con Python, así que vamos a construir sobre eso y explicarlo paso a paso, como si te lo estuviera contando un amigo mientras tomamos un café.

¿Qué es un Modelo?

Cuando hablamos de modelo (model) en el patrón MVC (Modelo-Vista-Controlador), nos referimos a la parte del sistema que se encarga de representar y manejar los datos del mundo real. En el contexto de Django, un modelo es una clase en Python que representa una tabla en la base de datos.

👉 Importante: Aunque normalmente usamos modelos con bases de datos, ellos no dependen del entorno web. Es decir, puedes pensar en ellos como clases puras de Python con algunas funciones adicionales.


¿Cómo interactuar con los modelos?

Django facilita mucho las cosas. Para interactuar con tus modelos sin tener que montar un servidor web, puedes usar la consola interactiva (shell) del framework:

python manage.py shell

Esto abre una consola especial donde puedes trabajar directamente con tu código Django.

Crear y guardar artículos en la base de datos

Vamos a crear una nueva entrada en una tabla llamada Article. Esta tabla está representada por una clase modelo en el archivo:

codica_django_blog.article.models

Paso 1.Crear un objeto manualmente

from codica_django_blog.article.models import Article

a = Article()  # Creamos una nueva instancia del modelo
a.name = 'my super article'  # Asignamos valores a sus atributos
a.body = 'my content'

En este punto, el artículo está creado en la memoria de Python, pero todavía NO está guardado en la base de datos.

Si quieres guardarlo, debes llamar al método save():

a.save()

Con esto, ya tienes una entrada guardada en la base de datos.

Paso 2. Crear y guardar en una sola línea

También puedes usar el método create() para hacer todo de una vez:

a = Article.objects.create(name='my super article', body='my content')

Este método:

  • Inserta el dato en la base de datos (hace un query SQL del tipo INSERT)
  • Asigna automáticamente un id
  • Llena los campos created_at y updated_at

Puedes consultar los datos así:

a.id  # 1
a.name  # 'my super article'
a.body  # 'my content'
a.created_at  # Fecha de creación
a.updated_at  # Fecha de última actualización

Editar datos existentes

Los modelos de Django funcionan como objetos de Python. Puedes modificar directamente los atributos:

a.name = 'another title'

Pero atención: esta modificación no se guarda hasta que llames nuevamente save():

a.save()

Buscar artículos existentes

¿Qué pasa si cerraste la consola y perdiste el objeto? Fácil. Puedes buscarlo con el método get() si conoces su ID:

a = Article.objects.get(id=1)

Esto devuelve una instancia del modelo si existe. Si no hay ninguna entrada con ese ID, Django lanza una excepción:

Article.objects.get(id=2)  # Lanza DoesNotExist si no existe

Filtrar resultados

Si quieres buscar usando condiciones más flexibles (y obtener varios resultados), usa filter():

resultado = Article.objects.filter(name='another title')

Esto devuelve un QuerySet, una especie de lista especial de objetos:

print(resultado)  # &lt;QuerySet [<Article: Article object (1)&gt;]&gt;

Ejemplo más complejo:

Supongamos que quieres obtener el body del primer artículo cuyo ID sea mayor que 50:

Article.objects.filter(id__gt=50).first().body

Este ejemplo usa varias partes:

Expresión Descripción
filter(...) Aplica un filtro
id__gt=50 gt significa "greater than" (> 50)
.first() Devuelve el primer elemento
.body Accede al campo body

Así puedes construir búsquedas muy potentes de forma muy concisa.


Consultar todos los artículos

Si deseas obtener todos los artículos de la base de datos, usa:

Article.objects.all()

Eliminar un artículo

También puedes eliminar entradas de la base de datos usando delete():

a = Article.objects.get(id=1)
a.delete()

Después puedes verificar que ya no existe:

Article.objects.all()  # &lt;QuerySet []&gt;

Resumen

  • Los modelos representan tus datos y la lógica de negocio.
  • Para crear un objeto puedes hacerlo en dos pasos (Article() + save()) o de una (create()).
  • Modificar atributos no afecta la base de datos hasta que llames save().
  • Usa get() para buscar por atributos únicos y filter() para búsquedas más generales.
  • Los filtros complejos se construyen con lookups como id__gt=50.
  • Puedes borrar objetos con delete().
  • Todos los métodos devuelven objetos Modelo o QuerySets, que puedes explorar y usar cómodamente.

Trabajo independiente

Crea artículos para el CRUD

En esta actividad crearás datos iniciales que necesitarás para el CRUD. Sigue estos pasos:

  1. Crea cinco artículos a través de la consola REPL de Django.
  2. Estos artículos serán necesarios para construir el CRUD en las próximas actividades.

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