0

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

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

类型是text代替dateor datetime

解决此问题的一种方法是,将类型设置为__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__这似乎有点奇怪之外,我没有找到其他方法。

4

1 回答 1

0

您可以子类DateInput化,并在定义表单时使用自定义小部件:

class MyDateInput(DateInput):
    input_type = 'date'

class FilterCallsForm(Form):
    from_date = forms.DateField(localize=True, widget=MyDateInput())
于 2012-08-29T15:29:41.030 回答