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>
Если вы добавите 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'))