gpt4 book ai didi

python - Django 获取一个月中每一天的对象数

转载 作者:行者123 更新时间:2023-12-05 08:53:02 25 4
gpt4 key购买 nike

我正在尝试使用以下 View 获取一个月中每一天的对象数量:

startIng = datetime.datetime(2019,1,1)
endIng = datetime.datetime(2019,2,1)
aDayDelta = timedelta(days=1)
totalDays = (endIng - startIng).days
days = [startIng + k*aDayDelta for k in range(totalDays)]
for mydays in days:
datem = Daily_movements.objects.filter(mov_date__startswith=(mydays))
...

但我一无所获

尝试:

datem = Daily_movements.objects.filter(mov_date__startswith=datetime.datetime(2019, 2, 9, 0, 0))

我得到了这个给定日期的完美结果

TIA 寻求帮助

最佳答案

您可以过滤年份和月份,然后每天获取一个Count,例如:

from django.db.models import <b>Count</b>
from django.db.models.functions import <b>ExtractDay</b>

qs = Daily_movements.objects.filter(
mov_date__year=year,
mov_date__month=month
).annotate(
<b>day=ExtractDay('mov_date')</b>,
).values(
<b>'day'</b>
).annotate(
<b>n=Count('pk')</b>
).order_by('day')

这将产生一个 QuerySet,它用两个项目包装字典:'day',表示日期,以及 n,它表示值。例如:

<QuerySet [
{ 'day': 1, 'n': 12 },
{ 'day': 3, 'n': 13 },
{ 'day': 4, 'n': 2 },
{ 'day': 6, 'n': 14 },
{ 'day': 10, 'n': 25 }
]>

然后我们可以将其转换为 Counter,例如:对于未知键默认为零的字典,例如:

from collections import Counter

data = Counter({d['day']: d['n'] for d in qs})

我们可以将其转换为列表:

from calendar import monthrange

__, ds = monthrange(year, month)
result = [data[i] for i in range(1, ds+1)]

关于python - Django 获取一个月中每一天的对象数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54620381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com