Módulo: ORM avanzado
Este módulo forma parte del curso de Django. Incluye 1 lecciones .
ORM avanzado
El módulo de ORM avanzado profundiza en las herramientas que Django ofrece para consultas sofisticadas y optimización de acceso a datos. Cubre managers personalizados, objetos Q y F, transacciones atómicas y estrategias de carga anticipada con select_related y prefetch_related.
Managers personalizados
Los managers son la interfaz principal entre el modelo y la base de datos. Django proporciona un manager por defecto (objects), pero se pueden crear managers personalizados para encapsular consultas frecuentes:
class ProductoActivoManager(models.Manager):
def get_queryset(self):
return super().get_queryset().filter(activo=True)
class Producto(models.Model):
nombre = models.CharField(max_length=100)
activo = models.BooleanField(default=True)
objects = models.Manager()
activos = ProductoActivoManager()
Objetos Q y F
Los objetos Q permiten construir consultas con operadores lógicos (|, &, ~) para condiciones complejas que no se pueden expresar con filter() encadenado. Los objetos F referencian valores de campos de la base de datos directamente, evitando traer datos a Python para compararlos o actualizarlos.
from django.db.models import Q, F
# Productos caros O destacados
Producto.objects.filter(Q(precio__gt=100) | Q(destacado=True))
# Incrementar precio un 10 % sin traer los datos a Python
Producto.objects.update(precio=F('precio') * 1.10)
Transacciones y optimización
Las transacciones atómicas (transaction.atomic()) garantizan la consistencia de operaciones que afectan a varias tablas. Para optimizar las consultas con relaciones, select_related ejecuta un JOIN en consultas uno-a-uno y muchos-a-uno, mientras que prefetch_related realiza una consulta adicional para relaciones muchos-a-muchos y conjuntos inversos.
Otros módulos de este curso
ORM avanzado
Lecciones de este módulo
Explora todas las lecciones disponibles en ORM avanzado
Todos los módulos del curso
Navega entre los módulos de Django
ORM avanzado
Estás aquíExplora más sobre Django
Descubre más recursos de Django
Alan Sastre
Ingeniero de Software y formador, CEO en CertiDevs
Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, Django es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.