在特定时间范围内显示事件 [英] Show events in a specific time range

查看:114
本文介绍了在特定时间范围内显示事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的问题是,我想要显示所有例如在2016-17-17-18-18,2018-1820年的事件,例如从1.07.2016到31.08.2017。
我使用Django 1.6。



当我去url: http://127.0.0.1:8000/en/production/2016-17 我有一个错误:
事件匹配查询不存在。



事件模型:

  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   

这是我的观点:

  class EventListView(ListView):

def get_queryset(self):
filter_ = {'online':True}
season_start = Event.objects.get tart = 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_)

请求帮助或一些提示。

解决方案

您将第一年作为四位参数发送,而第二年作为两个参数。因此,数据库正在寻找任何可能在2016年和0017年之间相关的任何事情,这不太可能返回任何结果。



使用完整的四位数年份的第二年参数,或做一些插入初始的20。


My problem is that I want to show all events that are for example in years 2016-17, 2017-18, 2018-19 etc, for example from 1.07.2016 to 31.08.2017. I use Django 1.6.

When I go to url: http://127.0.0.1:8000/en/production/2016-17 I got an error: Event matching query does not exist.

Event model:

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

Here is my url:

url(r'^(?P<branch_slug>/production/(?P<year1>[0-9]{4})-(?P<year2>[0-9]{2})$', EventView.as_view()),

Here is my 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_)

Please for help or some hint.

解决方案

You're sending the first year as a four-digit parameter, but the second as only two parameters. So the database is looking for anything that hapepend between 2016 and 0017, which is unlikely to return any results.

Either use full four-digit years for the year2 param, or do something to interpolate the initial "20".

这篇关于在特定时间范围内显示事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆