0

通常、フォームで DateInput ウィジェットを定義すると、生成される html は次のようになります。

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

タイプはortextの代わりです。datedatetime

これを修正する 1 つの方法は、次のようにタイプを設定することです__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 に答える