【问题标题】:query to loop over records by date in django查询在django中按日期循环记录
【发布时间】:2022-12-15 12:10:24
【问题描述】:
我正在尝试找到一种更好的方法来循环处理接下来 7 天(包括今天)的订单,我已经拥有:
unfilled_orders_0 = Model.objects.filter(delivery_on__date=timezone.now() + timezone.timedelta(0))
context['todays_orders'] = unfilld_orders_0.aggregate(field_1_sum=Sum('field_1'), field_2_sum=Sum('field_2'),field_3_sum=Sum('field_3'), field_4_sum=Sum('field_4'),field_5_sum=Sum('field_5'))
我想知道我是否可以以某种方式避免必须这样做七次——每天一次。我认为有一种更有效的方法可以做到这一点。
【问题讨论】:
标签:
django
django-views
django-templates
【解决方案1】:
您可以使用 for 循环处理它并将数据存储在上下文中,就像这样
from django.utils import timezone
from django.db.models import Sum
context = {}
for i in range(7):
qs = Model.objects.filter(delivery_on__date=(timezone.now() + timezone.timedelta(i)).date())
context = {}
context[f'orders_{i}'] = qs.aggregate(
field_1_sum=Sum('field_1'),
field_2_sum=Sum('field_2'),
field_3_sum=Sum('field_3'),
field_4_sum=Sum('field_4'),
field_5_sum=Sum('field_5'))