尝试编写一个 Django 查询来计算跨越多天的事件的每天事件

Trying to Write a Django Query That Counts Events Per Day For Events That Span Multiple Days

我正在使用 Django 并尝试根据多天的事件 运行 计算每天 运行 的事件数。例如,如果事件 1 从星期一开始到星期三结束,而事件 2 从星期二开始到星期四结束,那么每天的事件计数应该是:星期一(1 个事件)、星期二(2 个事件)、星期三(2 个事件)、星期四(1 个事件)。事件模型如下所示:

class Event(models.Model):
   name = models.CharField(max_length=300, blank=True) 
   start_date = models.DateTimeField(blank=True)
   end_date = models.DateTimeField(blank=True)

   def __str__(self):
       return self.name

我希望获得的查询结果包括我们计算的日期、当天的事件数 运行 以及当天每个事件的名称 运行日。对此 Django 查询的任何帮助都会有所帮助。提前致谢!

要查找特定日期的计数,我们可以这样做:

from datetime import date

target_date = date.today()    # Change this according to your needs.

todays_events = Event.objects.filter(
    start_date__date__lte=target_date,    # 'start_date__lte=target_date' if 'start_date' is a 'DateField'.
    end_date__date__gte=target_date,      # 'end_date__gte=target_date' if 'end_date' is a 'DateField'.
).count()

您可能想阅读:QuerySet API reference。它有很多例子。


要查找所有日期,请使用 minimum information required 获取所有对象并使用 Python 进行计数。

events = Event.objects.all().only('start_date', 'end_date')    # Only fetch 'start_date' and 'end_date' fields.

在 Python 中编写代码。