【发布时间】:2020-10-29 05:08:46
【问题描述】:
我有一个模型:
class Event(models.Model):
start_date = DateTimeField()
end_date = DateTimeField()
我想统计同一天的所有事件,并将此计数作为注释字段daily_events 包含在查询集的每个成员中。我想在数据库方面解决这个问题以提高速度。到目前为止我的代码:
from django.db.models import F, Q, DateTimeField, Count
from django.db.models.functions import TruncDate
events = Event.objects.all()
events = events.annotate(
daily_events=Count('pk', filter=Q(start_date__date=TruncDate(F('start_date')))))
for event in events:
print(event.daily_events)
例如我有 4 个事件,前 3 个在同一天,所以期望的输出应该是:
3
3
3
1
但当前输出错误:
1
1
1
1
有什么建议吗?
【问题讨论】:
标签: python django django-models django-orm django-annotate