Самый простой способ сделать это - предварительно рассчитать неделю и / или месяц и сохранить эти данные в другом поле. Тогда запрос так же прост, как YourTable.objects.values('week', 'year').annotate(Avg('money))
.
Вы должны также быть в состоянии сделать это с дополнительными () параметрами, но это иногда сложно. Это будет выглядеть как
YourTable.objects.extra(select={
'week': 'some_method_to_calculate_week_from_timestamp(timestamp)'
}).values('week').annotate(Avg('money'))
То, как вы будете вычислять неделю по метке времени во втором случае, будет зависеть от вашей БД. Если postgres необходимая информация будет здесь: http://www.postgresql.org/docs/8.1/static/functions-datetime.html