我有一张像这样的桌子:
client_id | 行动 | 日期(日期时间) |
---|---|---|
1 | 参观 | 2024-10-10 10:00 |
1 | 参观 | 2024-10-10 12:00 |
1 | 参观 | 2024-10-10 13:00 |
2 | 参观 | 2024-10-10 13:00 |
因此,我需要按日期计算分组的唯一客户数量。结果应类似于 {'date': 2024-10-10, "count_visits": 2}。
我尝试了注释(unique = True)和OuterRef的几种变体,但它从来没有按日期分组。
这是遵循 Raymond Hettinger 预先命令使用 dict 的解决方案:
from collections import defaultdict
# get the first queryset:
temp_qs = MyModel.objects.filter(
action="visits",
date__gte=from_date,
date__gte=to_date,
)
# get a dict with visits for each client:
visits_dict= defaultdict(list)
for temp_val in temp_qs:
visits_dict[temp_val.client].append(temp_val)
# count what you except:
count_dict = {client : defaultdict(int) for client in visits_dict}
count_dict=defaultdict(int)
for client,visits in visits_dict.items():
count_dict[client][visits.date]+=1
# if you really want a dict as you wrote :
your_dict = dict()
for client, date in count_dict.items():
your_dict[client]= {
'date': date,
"count_visits": count_dict[client][date]
}
希望对你有帮助!