SelectDateWidget - 传递日期范围

时间:2013-09-21 12:23:48

标签: django widget django-forms date-range

我正在使用SelectDateWidget,并希望根据我的数据库中的最大和最小日期值传递日期范围。

oldest = Item.objects.all().aggregate(Min('date'))['date__min']
start_year = Item.objects.get(date=oldest).date.year  # 2012

newest = Item.objects.all().aggregate(Max('date'))['date__max']
end_year = Item.objects.get(date=newest).date.year  # 2013


class MyForm(forms.Form):
    date_range = forms.DateField(widget=SelectDateWidget(years=range(start_year, end_year)))

以上仅显示start_year。这是选择的唯一选择。

下面的这个效果很好,对我来说它们看起来都差不多。

date_range = forms.DateField(widget=SelectDateWidget(years=range(2008, 2013)))

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您对范围函数的感知是关闭的(范围的最后一个参数不包含在列表本身,它是限制器)

>> range(2012, 2013)
.. [2012]

如果要包含2013,则需要偏移量,例如

>> range(2012, 2014)
.. [2012, 2013]