Django: получение данных за определенный интервал времени

Я собираюсь создать свою приборную панель. Дизайн этой приборной панели завершен. Теперь проблема в том, что я не понял, как получить сумму данных из базы данных (mysql) с определенным интервалом. например, я хочу получить доход за последние 15 дней, как это сделать?

models.py

class JaGAnalyticsData(models.Model):
project_management_id = models.IntegerField(blank=True, null=True)
date = models.DateField(blank=True, null=True)
ecommerce_users = models.FloatField(blank=True, null=True)
total_revenue = models.FloatField(blank=True, null=True)
conversion_rate = models.FloatField(blank=True, null=True)
total_transactions = models.IntegerField(blank=True, null=True)
class Meta:
    managed = False
    db_table = 'ja_g_analytics_data'

views.py

@login_required(login_url="/login/")
def index(request):
jga = JaGAnalyticsData.objects.all()   #this line of code will fetch the data from db
context = {'jga':jga}
#html_template = loader.get_template('home/index.html')
#return HttpResponse(html_template.render(context, request))
return render(request, 'home/index.html',context)

index.html

  <div class="row">
   <div class="col-sm-6">
   <h5 style="margin-top:3px " class="card-title text-uppercase text-muted mb-0">Last 
  week</h5>
  </div>
  <div class="col-sm-6">
  {{% for i in a %}}
   <span style="float: right;" class="h4 font-weight-bold">{{i.total_revenue}}</span>
    {{% end for %}}
     </div>

enter image description here

Если вы добавите DateField к вашей модели JaGAnalyticsData, вы сможете изменить ваш набор запросов, чтобы получить данные за последние 15 дней.

Добавьте это к вашей модели:

created_at = models.DateField(auto_now_add=True)

А для запроса последних 15 дней можно использовать:

from datetime import datetime, timedelta

jga = JaGAnalyticsData.objects.filter(created_at__gte=datetime.today()-timedelta(days=15))

А чтобы рассчитать общий доход за эти дни:

from django.db.models import Sum

jga = JaGAnalyticsData.objects.filter(created_at__gte=datetime.today()-timedelta(days=15)).aggregate(Sum('total_revenue'))
Вернуться на верх