通常在表单中定义DateInput小部件时,生成的html如下所示:
<input type="text" name="from_date" id="id_from_date">
类型为text
,而不是date
或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__
这样做,这似乎有点奇怪。
答案 0 :(得分:0)
您可以继承DateInput
,并在定义表单时使用自定义小部件:
class MyDateInput(DateInput):
input_type = 'date'
class FilterCallsForm(Form):
from_date = forms.DateField(localize=True, widget=MyDateInput())