我正在使用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)))
有什么建议吗?
答案 0 :(得分:2)
您对范围函数的感知是关闭的(范围的最后一个参数不包含在列表本身,它是限制器)
>> range(2012, 2013)
.. [2012]
如果要包含2013,则需要偏移量,例如
>> range(2012, 2014)
.. [2012, 2013]