[pyar] [Django] Optimizacion de queries y configuración de Apache
Tordek
kedrot en gmail.com
Mie Nov 16 16:13:04 ART 2011
Hasta ahora la mejor solución que se me ocurrió es buscar los IDs
llamando directamente a la DB, y después hacer
novedades = Articulos.objetos.select_related().filter(pk__in=ids)
que al menos es 2 queries en vez de 9.
2011/11/14 Tordek <kedrot en gmail.com>:
> Hola, lista:
>
> Tengo una consulta que, en Symfony/Doctrine, podía hacer fácilmente mediante
> queries Raw, pero parece que Django no me deja:
>
> Tengo un modelo Articulo, y Coleccion tiene muchos Articulos.
>
> Quiero seleccionar, para cada Coleccion, el último Articulo (según su
> Volumen, si lo tiene). Lo hago así:
>
> novedades = Articulos.objects.raw("""
> SELECT a.*
> FROM articulos a
> JOIN (SELECT b.idColeccion, max(b.volumen) vol
> FROM articulos b
> GROUP BY b.idColeccion) arts
> ON (a.idColeccion = arts.idColeccion AND a.volumen <=> arts.vol)
> ORDER BY a.idarticulo DESC
> LIMIT 8
> """)
>
> El problema es que, después, en la vista, tengo que leer la colección
> correspondiente a cada articulo, y esto significa n+1 queries, donde en
> Symfony lo hacía con sólo 1. ¿Se puede?
>
> Por otro lado...
>
> Quiero subir este sitio a Dreamhost, que usa Passenger, mientras que en mi
> máquina local uso mod_wsgi. ¿Cómo puedo configurar mod_wsgi para que, cuando
> llega una request, se fije si existe el archivo en DIRECTORIO/public, y si
> no, le pase la request a Django, que tiene su script en
> DIRECTORIO/passenger_wsgi.py.
>
> Saludos!
>
> --
> Guillermo O. «Tordek» Freschi. Programador, Escritor, Genio Maligno.
> http://tordek.com.ar :: http://twitter.com/tordek
>
More information about the pyar
mailing list