Blog de Contraslash (Legacy)

Consultas Multiples en una línea con Django

March 18, 2016

Consultas Multiples en una línea con Django

El ORM de Django es una herramienta muy potente, pero a la hora de realizar operaciones SQL complejas, debemos recurrir al raw, o anidar algunos ciclos, que no es algo muy eficiente a final de cuentas, porque terminamos realizando un montón de consultas y sobrecargando nuestra aplicación.

No tengo nada en contra de ejecutar sentencias RAW, pero con regularidad, he usado algunas herramientas de python para pulir mis consultas.

Un ejemplo:

import operator
from django.db.models.query_utils import Q

def consulta_compleja(criterios):
    return Modelo.objects.filter(reduce(operator.or_, [Q(filtro=criterio) for criterio in criterios]))