django - 如何在 Django 中显示今天、昨天和过去 7 天的数据?
问题描述
我想显示 的数据today
,yesterday
最后7 days
,请让我知道我该怎么做。
我正在尝试这个..但它只显示最近 7 天的数据,但我想根据 显示我的 HTML 文件中的数据,today
这
是我的文件..yesterday
last 7 days
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>
解决方案
此查询将给出一个聚合结果并在模板中适当地使用它
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>
推荐阅读
- nginx - 将 SSL 证书绑定到端口号 -- Nginx
- python - PHP 回调等价物
- python - Python:如何仅显示按国家/地区划分的运动员人数最多的运动?
- javascript - 如何在 Intl.NumberFormat 中格式化货币符号?
- arrays - 结构中具有动态大小的 C 语言数组
- django - 我可以在 Django TextField() 模型中保存富文本数据吗?
- kotlin - 解释 Kotlin 中 buildMap() 函数的内部结构
- php - 使用 Codeigniter 将完整日历中的数据发布到 Google 日历
- typescript - 将“jest”从依赖项移动到 devDependencies 后,Jest 测试开始失败
- sql - ORACLE如何应用CTAS与子分区?