显示特定时间范围内的事件

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() 函数(传单)仅显示特定范围(圆圈)内的点

使用 jQuery 的 datepicker 突出显示特定范围内的日期

当时间范围在两天之间时如何获取特定时间范围内的记录

映射范围内的特定办公室

ORACLE SQL - 如何检查时间是不是在特定范围内?

Postgres tsrange,按日期和时间过滤