2013-09-21 38 views
1

我正在使用SelectDateWidget,并希望根据数据库中的最大和最小日期值传递日期范围。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))) 

有什么建议吗?

回答

2

你的范围函数的感觉是关闭(不包括在名单本身,其限范围的最后一个参数)

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

您需要的偏移,如果你想包括2013,如

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