我有一个需要选择某一天的应用程序,它返回给我事件的总数以及当天的活动事件列表。 每个事件都有一个持续时间。 我可以为今天进行过滤,但是如果要在其他任何一天进行过滤,该怎么办?
模型
class Event(models.Model):
name = models.CharField(max_length=50, null=True, blank=True, verbose_name='Name')
start_date = models.DateTimeField(null=True, blank=False, verbose_name='Start')
end_date = models.DateTimeField(null=True, blank=False, verbose_name='End')
def __str__(self):
return '{}'.format(self.name)
视图
def total_events(request):
events = Event.objects.filter(Q(start_date__lte=timezone.now()) & Q(end_date__gte=timezone.now()))
total_events = events.count()
context = {
'events': events,
'total_events': total_events,
}
return render(request, 'list.html', context)
模板
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Event Search</title>
</head>
<body>
<br>
<br>
DAY:
<input type="text">
<button>Filter</button>
<br>
<br>
<b>Total of active events in filtered day:</b> {{ total_events }}
<br>
<b>List of active events in filtered day:</b>
<table>
<tr>
{% for event in events %}
<td>
{{ event.name }}
</td>
{% endfor %}
</tr>
</table>
</body>
</html>
输出如下:
有人可以给我一个方向吗?谢谢!
答案 0 :(得分:0)
您需要在要过滤的当天创建一个datetime
对象。
day = timezone.datetime(year=2019, month=11, day=30)
# and now you can use this object in your filter query
答案 1 :(得分:0)
挖掘之后,我找到了解决方案:
观看次数
def total_events(request):
events = Event.objects.all()
day_query = request.GET.get('day')
if day_query != '' and day_query is not None:
events = Event.objects.filter(Q(start_date__date__lte=day_query) & Q(end_date__date__gte=day_query))
total_events = events.count()
context = {
'events': events,
'total_events': total_events,
}
return render(request, 'list.html', context)
模板
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Event Search</title>
</head>
<body>
<br>
<br>
DAY:
<form method="GET" action=".">
<input type="text" name="day">
<button type="submit">Filter</button>
</form>
<br>
<br>
<b>Total of active events in filtered day:</b> {{ total_events }}
<br>
<b>List of active events in filtered day:</b>
<table>
<tr>
{% for event in events %}
<td>
{{ event.name }}
</td>
{% endfor %}
</tr>
</table>
</body>
</html>