У меня есть модель:
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
Есть какие-нибудь советы?