我有下面的Django视图来过滤基于月份的事件
class FilterByMonthView(ListView):
model = Event
template_name = 'your_template.html'
context_object_name = 'filtered_data'
def get_queryset(self):
month = self.kwargs.get('month')
month = str(month).zfill(2)
# Construct a date range for the specified month
start_date = datetime.strptime(f'2023-{month}-01 00:00:00', '%Y-%m-%d %H:%M:%S')
end_date = datetime.strptime(f'2023-{month}-01 23:59:59', '%Y-%m-%d %H:%M:%S')
# Assuming end of the month
# Filter the data based on the date range
queryset = Event.objects.filter(
event_date__range=(start_date, end_date)
)
return queryset
下面是我的Models.py
class Event(models.Model):
emp_id = models.IntegerField(max_length=50)
event_type = models.CharField(max_length=50)
event_date = models.DateTimeField()
email = models.EmailField()
def __str__(self):
return f"{self.event_type} {self.event_date} {self.email}"
在我创建事件时,在Django管理页面中,我看到以下输出
ID Emp id Event type Event date Email
6 67565 Birthday Nov. 15,2010,6 a.m. jhad@jhsd.com
下面是分别代表项目级和应用级的urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('emp/', include('EVENTS.urls')),
]
from django.urls import path
from .views import FilterByMonthView
urlpatterns = [
path('filter/<int:month>/', FilterByMonthView.as_view(), name='filter-by-month'),
]
Html如下所示
<!DOCTYPE html>
<html>
<head>
<title>Filtered Events</title>
</head>
<body>
<h1>Events for the Selected Month</h1>
<ul>
{% for event in filtered_data %}
<li>{{ event.event_date }} - {{ event.event_name }}</li>
<!-- Display other event attributes as needed -->
{% empty %}
<li>No events found for this month.</li>
{% endfor %}
</ul>
</body>
</html>
我在浏览器中看到"No events found for this month.
".
下面是我正在使用的示例url
http://127.0.0.1:8000/emp/filter/11/
我怀疑问题似乎出在日期格式上.但也不确定.请提出建议