[pyar] Consulta Django

Varela Matias matu.varela en gmail.com
Jue Jul 27 11:25:01 ART 2017


Ah ok! Entiendo..

Viste esto?
https://docs.djangoproject.com/en/1.11/ref/models/database-functions/#extract
No lo probé, pero quizás podés hacer:

sales_queryset.annotate(week=Extract('date', 'week').values('
week').annotate(sum_week=Sum('kg'))

o similar.

También podrías tomar semana-kg y luego sumarlo por fuera del query:

week_kg = sales_queryset.annotate(week=Extract('date',
'week').values_list('week', 'kg')

from collections import defaultdict
test_dict = defaultdict(float)
for key, val in week_kg:
        test_dict[key] += val

Obtendrías algo como: [(1', 3), ('2', 57), ...]

Ojo, no lo estoy probando, pero podría funcionar.

Saludos

El jue., 27 jul. 2017 a las 11:05, Sofi Denner (<sofi.denner en gmail.com>)
escribió:

> Hola Matias!
> Si, el .filter(date__week=x) me funciona bien.
> El problema lo tengo con .value('date__week')
> Y por ejemplo, tampoco funciona .value('date__year') ni ninguno de los
> lookups :(
>
>
>
> El jue., 27 de jul. de 2017 a la(s) 10:06, Varela Matias <
> matu.varela en gmail.com> escribió:
>
>> Hola Sofia, qué versión de django estás usando?
>>
>> En la 1.11 agregaron el lookup week -->
>> https://docs.djangoproject.com/en/1.11/ref/models/querysets/#week
>>
>>
>> El jue., 27 jul. 2017 a las 9:50, Sofi Denner (<sofi.denner en gmail.com>)
>> escribió:
>>
>>> Buen día lista! Les hago una pregunta de Django, que no estoy pudiendo
>>> resolver:
>>> Existe alguna forma de hacer algo parecido a esto?:
>>>
>>> sales_queryset.values('date__week').annotate(sum_week=Sum('kg'))
>>>
>>> La idea es agrupar la suma de todos los kg vendidos por semana. La parte
>>> que falla es la de ".values('date__week')". Colocando ".values('date')"
>>> funciona, pero por supuesto, agrupa las ventas por día y no por semana.
>>>
>>> Hasta ahora la forma de "solucionarlo" que se me ocurrió es haciendo:
>>>
>>> [sales_queryset.filter(date__week=k).aggregate(sum=Sum('kg'))['sum'] for
>>> k in weeks_list]
>>>
>>> Pero esta forma es suuuuper ineficiente.
>>>
>>> Alguien me tira alguna idea de cómo resolverlo?
>>>
>>> Gracias!!
>>>
>>> _______________________________________________
>>> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
>>> Sitio web: http://www.python.org.ar/
>>>
>>> Para administrar la lista (o desuscribirse) entrar a
>>> http://listas.python.org.ar/listinfo/pyar
>>>
>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>> Argentina - http://www.usla.org.ar
>>
>> --
>> Matías Varela
>> (260) 4290769 <(260)%20429-0769>
>> _______________________________________________
>> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
>> Sitio web: http://www.python.org.ar/
>>
>> Para administrar la lista (o desuscribirse) entrar a
>> http://listas.python.org.ar/listinfo/pyar
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>
> _______________________________________________
> Lista de Correo de PyAr - Python Argentina - pyar en python.org.ar
> Sitio web: http://www.python.org.ar/
>
> Para administrar la lista (o desuscribirse) entrar a
> http://listas.python.org.ar/listinfo/pyar
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar

-- 
Matías Varela
(260) 4290769
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20170727/698aa864/attachment.html>


Más información sobre la lista de distribución pyar