【发布时间】:2017-08-29 17:10:41
【问题描述】:
我的问题是我想显示所有事件,例如 2016-17、2017-18、2018-19 等年,例如从 1.07.2016 到 31.08.2017。 我使用 Django 1.6。
当我转到 url:http://127.0.0.1:8000/en/production/2016-17 时出现错误:
Event matching query does not exist.
事件模型:
class Event(models.Model):
name = models.CharField('Name', max_length=255)
start = models.DateField('Start')
end = models.DateField('End')
def __unicode__(self):
return self.name
这是我的网址:
url(r'^(?P<branch_slug>/production/(?P<year1>[0-9]{4})-(?P<year2>[0-9]{2})$', EventView.as_view()),
这是我的看法:
class EventListView(ListView):
def get_queryset(self):
filter_ = {'online': True}
season_start = Event.objects.get(start=datetime.date(int(self.kwargs['year1']), 7, 1))
season_end = Event.objects.get(end=datetime.date(int(self.kwargs['year2']), 8, 31))
filter_['start__gte'] = season_start
filter_['end__lte'] = season_end
return self.model.objects.filter(**filter_)
请寻求帮助或一些提示。
【问题讨论】:
-
season_start(和 season_end)是 Event 的一个实例。但是您将其用作日期。尝试
filter_['start__gte'] = season_start.start(和 season_end 相同)返回一个 Date 对象。 -
@Rafael 感谢您的提示,但我在这个地方遇到错误:
season_start = Event.objects.get(start=datetime.date(int(self.kwargs['year1']), 7, 1)) -
对不起。因此,您的数据库在指定日期没有事件。 (同样的错误here)
标签: python regex django url view