1

我正在使用 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)))

请问有什么建议吗?

4

1 回答 1

2

您对范围函数的看法不正确(范围的最后一个参数不包含在列表本身中,它是限制器)

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

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

>> range(2012, 2014)
.. [2012, 2013]
于 2013-09-21T12:27:53.960 回答