I want to display data of today
, yesterday
and last 7 days
, please let me know how I can do it.
I am trying this....but it's displaying me only the last 7 days data, but I want to display data in my HTML file according to today
, yesterday
and last 7 days
here is my views.py
file..
def myview(request):
datas= Mymodel.objects.filter(created_on_gte=datetime.now()-
timedelta(days=7)).count()
context= {'datas':datas}
return render(request, 'test.html', context}
here is my test.html
file, where I am displaying data...
<p>{{datas}} today</p>
<p>{{datas}} Yesterday</p>
<p>{{datas}} Last 7 Days</p>
This query will give an aggregated result and use it appropriately in the template
from django.utils import timezone
from datetime import timedelta
from django.db import models
now = timezone.now()
Mymodel.objects.aggregate(
today=models.Count('id', filter=models.Q(created_on__date=now.date())),
yesterday=models.Count('id', filter=models.Q(created_on__date__gte=(now - timedelta(hours=24)).date())),
last_7_day=models.Count('id', filter=models.Q(created_on__date__gte=(now - timedelta(days=7)).date())),
)
from django.utils import timezone
from datetime import timedelta
def myview(request):
now = timezone.now()
result = Mymodel.objects.aggregate(
total=models.Count('id'),
today=models.Count('id', filter=models.Q(created_on__date=now.date())),
yesterday=models.Count('id', filter=models.Q(created_on__date__gte=(now - timedelta(hours=24)).date())),
last_7_day=models.Count('id', filter=models.Q(created_on__date__gte=(now - timedelta(days=7)).date())),
)
context = {'result': result}
return render(request, 'test.html', context)
then in your template,
<p>{{ result.today }} today</p>
<p>{{ result.yesterday }} Yesterday</p>
<p>{{ result.last_7_day }} Last 7 Days</p>