如何在声明时指定小部件的input_type?

时间:2012-08-29 15:10:18

标签: django

通常在表单中定义DateInput小部件时,生成的html如下所示:

<input type="text" name="from_date" id="id_from_date">

类型为text,而不是datedatetime

解决此问题的一种方法是,在__init__

中设置类型
class FilterCallsForm(Form):
    def __init__(self, *args, **kwargs):
        super(FilterCallsForm, self).__init__(*args, **kwargs)
        self.fields['from_date'].widget.input_type = 'date'

    from_date   = forms.DateField(localize=True, widget=forms.DateInput())

这样可行,我根据需要获得了<input type="date" name="from_date" id="id_from_date">

然而,当我声明小部件时,有没有办法正确定义它?我没有找到一种方法,而不是通过__init__这样做,这似乎有点奇怪。

1 个答案:

答案 0 :(得分:0)

您可以继承DateInput,并在定义表单时使用自定义小部件:

class MyDateInput(DateInput):
    input_type = 'date'

class FilterCallsForm(Form):
    from_date = forms.DateField(localize=True, widget=MyDateInput())