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