Django Agrupación mensual / trimestral de datos DateField ()

Tengo un modelo de django que contiene, entre otras cosas, un atributo DateField () :

class Table(): date = models.DateField() value = models.FloatField() 

Estoy escribiendo una vista que agrupa estos datos por semana, mes, trimestre y año. He codificado un cálculo que obtiene mi valor mensual simplemente lo suficiente, sumndo todos los valores de ese mes y repartiendo cuántas entradas hubo, pero creo que debe haber una forma más elegante de hacerlo.

Lo que estoy buscando es algo como esto:

 get_monthly(Table.objects.all()) >>> [123, 412, 123, 534, 234, 423, 312, 412, 123, 534, 234, 423] get_quarterly(Table.objects.all()) >>> [123, 412, 123, 534] 

Donde los valores en la lista son promedios de cada mes.

¿Alguien puede ayudarme?

Puedes hacer esto usando las capacidades de consulta del modelo. Aquí hay un ejemplo para la consulta mensual:

 from django.db.models import Avg Table.objects.extra(select={'month':"strftime('%m',date)"}).values('month').annotate(Avg('value')) 

Es posible que desee cambiar el tiempo de strftime('%m',date) con el month(date) o cualquier otro cálculo, según la funcionalidad de fecha y hora de su base de datos.