selectdatewidget设置默认的月和日

时间:2012-09-20 19:23:25

标签: django django-forms django-widget

如何将selectDateWidget日期和月份选项设置为默认值为1月1日,但保留年份选项不变。

现在我在做:

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

但是这会将默认设置为实际日期。我可以更改什么来为我提供所需的默认选项?

提前致谢

1 个答案:

答案 0 :(得分:0)

制作自定义小部件,例如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)

with:

lessTime = forms.DateField(required=False,          
                           widget=MySelectDateWidget(years=range(1980, 2013)))