尝试编写一个Django查询,该查询每天对跨越多天的事件进行计数

时间:2019-10-23 03:55:05

标签: python django django-models django-queryset django-orm

我正在使用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查询的任何帮助都将有所帮助。提前致谢!

1 个答案:

答案 0 :(得分:2)

要查找特定日期的计数,我们可以执行以下操作:

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编写代码。