- ¿Qué es un Modelo?
- ¿Cómo interactuar con los modelos?
- Crear y guardar artículos en la base de datos
- Editar datos existentes
- Buscar artículos existentes
- Filtrar resultados
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?
👉 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_atyupdated_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) # <QuerySet [<Article: Article object (1)>]>
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() # <QuerySet []>
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 yfilter()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:
- Crea cinco artículos a través de la consola REPL de Django.
- 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.