显示特定时间范围内的事件
Posted
技术标签:
【中文标题】显示特定时间范围内的事件【英文标题】:Show events in a specific time range 【发布时间】: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)
【参考方案1】:
您将第一年作为四位数参数发送,但第二年仅作为两个参数发送。因此,数据库正在寻找 2016 年到 0017 年之间发生的任何事情,这不太可能返回任何结果。
要么对 year2 参数使用完整的四位数年份,要么做一些事情来插入初始的“20”。
【讨论】:
以上是关于显示特定时间范围内的事件的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 .getBounds() 函数(传单)仅显示特定范围(圆圈)内的点