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 に答える