Uso de Managers en Django para Consultas de Base de Datos
Resumen
Los managers en Django son una herramienta poderosa que permite realizar diversas acciones dentro de las listas de objetos de un modelo, como contar, traer el primero o el último elemento, crear nuevos registros y mucho más.
Para contar los autores que están creados, utilizamos el manager por defecto llamado objects y el método count.
Para obtener el primer y último autor, podemos usar los métodos first y last del manager objects.
primer_autor = Author.objects.first()print(f"El primer autor es: {primer_autor.name}")ultimo_autor = Author.objects.last()print(f"El último autor es: {ultimo_autor.name}")
¿Cómo crear nuevos autores con el manager?
Podemos crear un nuevo autor directamente en la base de datos utilizando el método create del manager.
nuevo_autor = Author.objects.create(name="Luis Martínez", birthday="1980-01-01")print(f"Nuevo autor creado: {nuevo_autor.name}")
¿Cómo traer una lista de autores?
Para obtener una lista de todos los autores, utilizamos el método all del manager, que nos devuelve un queryset.
autores = Author.objects.all()for autor in autores:print(autor.name)
¿Cómo filtrar autores?
Podemos filtrar autores utilizando el método filter, que permite especificar condiciones basadas en los campos del modelo.
autores_filtrados = Author.objects.filter(name="Pydanny")for autor in autores_filtrados:print(f"Autor filtrado: {autor.name}")
¿Cómo borrar un autor filtrado?
Primero, filtramos el autor que queremos borrar y luego aplicamos el método delete.
Managers personalizados: Puedes crear managers personalizados para añadir métodos específicos o modificar el comportamiento de las consultas.
Chaining: Los métodos de los managers se pueden encadenar para construir consultas complejas.
Lazy evaluation: Las consultas no se ejecutan hasta que realmente se necesitan los resultados, lo que permite una construcción eficiente de consultas complejas.
Veo que no lo mencionan pero cuando estamos trabajanco con objetos no es necesario enviar las variables que contiene, ejemplo "name" o "birth_date", evidentemente es una buena práctica y evita errores humanos, pero cuando trabajamos con tan pocos datos podemos simplemente obviarlo, eso sí, debemos utilizarlo en el mismo orden, esto es lo importante, mientras que enviandole el atributo no necesariamente tiene que ser en el mismo orden.
Author.objects.create(name="Daniel", birth_date="1990-12")``````js
Author.objects.create("Daniel","1990-12-05")```Nota:No lo hagan, solo es bueno que lo sepan.
una recomendacion para el ux ui, debe tener en cuenta que la barrita donde se adelanta o se retrasa 15 minutos, la misma de play, no permite mostrar lo que esta copiando, entonces es bueno que le haga clear a la terminal, o , ponga pequeña la ventana de la terminal.
#Creo la lista de carroscarritos =['BMW','Mazda','Toyota','Honda','Ford','Mercedes-Benz','Audi','Volkswagen','Nissan','Chevrolet']# Creo una Función lambda para estructurar los datosgenerar_datos =lambda coches:[{"title": coche,"year":1996+ i,"brand":chr(65+ i),"price":9000+(i *100)}for i, coche inenumerate(coches)]# Ejecutamos la función datos_estructurados = generar_datos(carritos)# 1. Convierto la lista de diccionarios en una lista de objetos 'Carro'objetos_carro =[Carro(**datos)for datos in datos_estructurados]# 2. Los guardamos todos de una sola vez en la base de datosCarro.objects.bulk_create(objetos_carro)
📚 Nombre de la clase
Queries y filtros en Django: optimización y estrategias
🎯 Idea principal
Django permite consultar y filtrar datos de la base de datos mediante el ORM, utilizando consultas llamadas queries. Estas consultas permiten recuperar información específica aplicando filtros y condiciones. Usar correctamente las queries permite obtener datos de forma eficiente y optimizar el rendimiento de la aplicación.
⚡ Síntesis en 10 segundos
Django consulta datos mediante queries del ORM.
Las queries permiten filtrar información específica.
Se pueden aplicar condiciones sobre los modelos.
Las consultas bien diseñadas mejoran el rendimiento.
El ORM permite consultar datos sin escribir SQL.
🔑 Puntos clave
Queries en Django
Son consultas que permiten recuperar datos almacenados en la base de datos.
Filtros
Permiten seleccionar registros que cumplen ciertas condiciones.
Uso del ORM
Las consultas se realizan usando métodos sobre los modelos.
Optimización de consultas
Filtrar correctamente evita recuperar datos innecesarios.
Acceso eficiente a datos
Las consultas permiten trabajar con subconjuntos específicos de información.
🧠 Conceptos importantes
Query
Solicitud que se hace a la base de datos para recuperar información.
Filtro
Condición aplicada a una consulta para limitar los resultados.
QuerySet
Conjunto de resultados que devuelve una consulta en Django.
Optimización
Proceso de mejorar el rendimiento de las consultas para reducir consumo de recursos.
ORM
Sistema que traduce consultas escritas en Python a consultas SQL.
🧩 Modelo mental de la clase
Aplicación necesita información específica
↓
Se construye una query sobre un Model
↓
Se aplican filtros o condiciones
↓
El ORM traduce la consulta a SQL
↓
La base de datos devuelve los registros que cumplen las condiciones
Este flujo muestra cómo Django recupera datos relevantes del sistema.
🚀 Acciones inmediatas
Identificar qué modelos contienen la información necesaria.
Construir consultas que recuperen solo los datos requeridos.
Aplicar filtros para limitar los resultados.
Analizar cómo mejorar consultas para evitar recuperar datos innecesarios.
💼 Aplicación profesional
Las queries y filtros son fundamentales para cualquier sistema que maneje información, por ejemplo:
buscar usuarios específicos
filtrar productos por categoría
obtener pedidos de un cliente
mostrar contenido según criterios definidos
En aplicaciones reales, las consultas eficientes son clave para mantener buen rendimiento cuando la base de datos crece.
🔥 Errores comunes
Recuperar todos los registros cuando solo se necesitan algunos.
Aplicar filtros después de obtener los datos en lugar de hacerlo en la consulta.
No considerar el impacto de las consultas cuando la base de datos crece.
Confundir consultas simples con consultas optimizadas.
📝 Reflexión estratégica
En sistemas reales, la eficiencia de las consultas define gran parte del rendimiento del backend.
Aprender a consultar solo la información necesaria y aplicar filtros correctamente permite construir aplicaciones que escalan mejor y utilizan los recursos del sistema de forma más inteligente.
El profesor utiliza la shell para explicar a fondo cómo funciona el objeto request en Django, lo cual es importante para entender antes de trabajar con vistas basadas en funciones o clases.