我正在尝试使用以下 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)]
https://stackoverflow.com/questions/54620381/
相关文章:
python - MPI4Py comm.Barrier() 没有阻塞 MSMPI?
python-3.x - 为什么在 python 中允许 for else
kubernetes - 定时任务 : unknown field "configMapRef"
reactjs - 将映射数据传递给 Material-UI 模态
reactjs - 为什么我的 GlobalStyles 在使用样式化组件部署后不起作用?
haskell - OverloadedStrings 语言扩展如何工作?