如何在 Django 中显示今天、昨天和过去 7 天的数据?
Posted
技术标签:
【中文标题】如何在 Django 中显示今天、昨天和过去 7 天的数据?【英文标题】:How to display data Today, Yesterday and last 7 Days in Django? 【发布时间】:2021-01-09 07:39:19 【问题描述】:我想显示today
、yesterday
和最后一个7 days
的数据,请告诉我该怎么做。
我正在尝试这个....但它只显示最近 7 天的数据,但我想根据 today
、yesterday
和 last 7 days
在我的 html 文件中显示数据
这是我的views.py
文件..
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
这是我的test.html
文件,我在其中显示数据...
<p>datas today</p>
<p>datas Yesterday</p>
<p>datas Last 7 Days</p>
【问题讨论】:
created_on
的字段类型是什么? DateField
或 DateTimeField
?
这是一个DateTimeField
字段...
【参考方案1】:
这个查询将给出一个聚合结果并在模板中适当地使用它
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)
然后在你的模板中,
<p> result.today today</p>
<p> result.yesterday Yesterday</p>
<p> result.last_7_day Last 7 Days</p>
【讨论】:
我将如何根据today
、yesterday
和last 7 days
在我的html 上显示
将数据作为上下文变量传递到模板中。
What is context in Django
我用视图更新了我的任务,请检查并告诉我
它给了我0
所有today
、yesterday
和last 7 days
的结果【参考方案2】:
试试这样的:
from django.shortcuts import render
def days(request):
week = Mymodel.objects.filter(created_on_gte=datetime.now()-timedelta(days=7)).count()
yesterday = Mymodel.objects.filter(created_on_gte=datetime.now()-timedelta(days=1)).count()
today = Mymodel.objects.filter(created_on_gte=datetime.now())
context =
'week': week,
'yesterday' : yesterday,
'today' : today,
return render(request, 'days.html', context)
.html
<p>today today</p>
<p>yesterday Yesterday</p>
<p>week Last 7 Days</p>
【讨论】:
以上是关于如何在 Django 中显示今天、昨天和过去 7 天的数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何将行旋转为列,并按过去 7 天显示 - SQL SERVER
如何使用窗口函数获取每个日期值的今天、过去 7 天、过去 30 天的指标?