[pyar] [django] Consulta en tabla grande con annotate y Sum
Ariel Rossanigo
arielrossanigo en gmail.com
Jue Dic 18 07:38:47 ART 2014
El 17 de diciembre de 2014, 2:42 p. m., Matias Varela<matu.varela en gmail.com>
escribió:
[...]
> ¿Se puede generar un QuerySet manualmente? por lo que leí no. Porque sería
> una solución.
>
>
Una solución rápida y fea que se me ocurre es crear una vista en postgres y
armar un modelo de esa vista.
Por ejemplo:
* Ejecutas esto en postgres
CREATE VIEW vw_reporte As
SELECT "pp_cliente"."id", "pp_cliente"."nombre", mov."monto" AS "saldo"
FROM "pp_cliente"
LEFT OUTER JOIN (
select cliente_id, sum(monto) as monto
from "pp_movimientocliente"
group by cliente_id) mov ON ( "pp_cliente"."id" = mov."cliente_id" )
* models.py
class MiReporte(models.Model):
id = models.IntegerField(primary_key=True)
nombre = models.CharField()
saldo = models.FloatField()
class Meta:
managed = False
db_table = 'vw_reporte'
Después haces la query directamente y obtenes un Queryset
In [1]: from pp.models import MiReporte
In [2]: q = MiReporte.objects.all()
In [3]: print type(q), str(q.query)
<class 'django.db.models.query.QuerySet'> SELECT "vw_reporte"."id",
"vw_reporte"."nombre", "vw_reporte"."saldo" FROM "vw_reporte"
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20141218/d2273868/attachment-0001.html>
More information about the pyar
mailing list