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

时间:2017-04-04 13:12:48

标签: python regex django url view

我的问题是我想要显示例如2016-17,2017-18,2018-19等年份的所有事件,例如从2016年7月1日到2017年8月31日。 我使用Django 1.6。

当我去网址时: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_)

请寻求帮助或提示。

1 个答案:

答案 0 :(得分:3)

您将第一年作为四位数参数发送,但第二年仅作为两个参数发送。所以数据库正在寻找2016年和0017之间的任何东西,这不太可能返回任何结果。

要么为year2 param使用完整的四位数年份,要么做一些内插初始的“20”。