2

selectDateWidgetの日と月のオプションをデフォルトの1月1日に設定し、年のオプションはそのままにしておくにはどうすればよいですか。

今私はやっています:

day = datetime.date.today()
lessTime = forms.DateField(required=False, widget=SelectDateWidget(years=range(1980, 2013)), initial=day)

ただし、これによりデフォルトが実際の日付に設定されます。必要なデフォルトオプションを提供するために何を変更できますか?

前もって感謝します

4

1 に答える 1

1

カスタムウィジェットを作成します。MySelectDateWidget

class MySelectDateWidget(SelectDateWidget):
    def render(self, name, value, attrs=None):
        from collections import namedtuple
        date_tweak = namedtuple('Date', 'year month day')
        date_value = date_tweak(None, 1, 1) #tweak to cheat SelectDateWidget's 
                                   #render method which expects a datetime object
        return super(MySelectDateWidget, self).render(name, date_value, attrs)

次に交換します:

lessTime = forms.DateField(required=False,    
          widget=SelectDateWidget(years=range(1980, 2013)), initial=day)

と:

lessTime = forms.DateField(required=False,          
                           widget=MySelectDateWidget(years=range(1980, 2013)))
于 2012-09-20T21:20:11.883 に答える