如何在Django中今天,昨天和过去7天显示数据?

时间:2020-09-23 06:33:54

标签: django django-models django-views django-templates django-filter

我想显示todayyesterday和最后7 days的数据,请让我知道我该怎么做。

我正在尝试...。但是它仅显示最近7天的数据,但是我想根据todayyesterday和{{1}在HTML文件中显示数据} 这是我的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

2 个答案:

答案 0 :(得分:2)

此查询将给出汇总结果,并在模板中适当使用

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>

答案 1 :(得分:0)

尝试这样的事情:

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>