2013-09-21 2 views
1

Я использую SelectDateWidget и хочу передать диапазон дат, основанный на значениях max и min date из моей базы данных.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] 
Смежные вопросы