【问题标题】:How to display data Today, Yesterday and last 7 Days in Django?如何在 Django 中显示今天、昨天和过去 7 天的数据?
【发布时间】:2021-01-09 07:39:19
【问题描述】:

我想显示todayyesterday 和最后一个7 days 的数据,请告诉我该怎么做。

我正在尝试这个....但它只显示最近 7 天的数据,但我想根据 todayyesterdaylast 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 的字段类型是什么? DateFieldDateTimeField?
  • 这是一个DateTimeField 字段...

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


【解决方案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>

【讨论】:

  • 我将如何根据todayyesterdaylast 7 days 在我的html 上显示
  • 将数据作为上下文变量传递到模板中。
  • 我用视图更新了我的任务,请检查并告诉我
  • 它给了我0 所有todayyesterdaylast 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-18
    • 2016-05-28
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多