Учитывая дату, как вы можете суммировать итоги недели, в которую попадает эта дата, и каждой из 10 предыдущих недель?
Для каждого дня за последние 30 это может быть выполнено следующим образом:
import datetime as dt
from django.db.models import Sum
last_30 = dt.date.today() - dt.timedelta(days=30)
order_data = Order.objects.filter(
date__gt=last_30).extra(
select={'day': 'date(date)'}.values('day').annotate(
total=Sum('total')
)
print(order_data)
<OrderQuerySet [{'day': datetime.date(2018, 8, 28), 'total': Decimal('50000.00'),
{'day': datetime.date(2018, 8, 29), 'total': Decimal('84000.00'),
'...(remaining elements truncated)...']>
Я полагаю, что их можно как-то сгруппировать по неделям после факта, просматривая order_data
, но мне было интересно, есть ли другой способ.
Использование postgresql, если это имеет значение.