如何将datepicker和timepicker添加到Django forms.SplitDateTimeField?

时间:2018-04-30 15:14:30

标签: django twitter-bootstrap datetimepicker django-crispy-forms

我有一个表单,用于从模型中的日期时间字段中分割日期和时间。

class MyForm(forms.ModelForm):

    class Meta:
        model   = MyModel
        fields  = ('name', 'description', 'start', 'end',)
        widgets = {
            'start': forms.SplitDateTimeWidget(),
            'end': forms.SplitDateTimeWidget(),
            }

如何将datepicker和timepicker添加到呈现的每个单独的输入框?

环境:

'start': forms.SplitDateTimeWidget(attrs={'type': 'date'})

使两个输入都为datepicker,但我需要第二个作为时间戳..

我正在使用Django 2.0,bootstrap和crispy表单

1 个答案:

答案 0 :(得分:4)

forms.SplitDateTimeWidget()呈现一个Html输入,其中可能包含模板中需要的一些属性:

forms.SplitDateTimeWidget(attrs={'attrs': 'attrs'})`.
# You don't need to edit the "input:type", type text is good

渲染将是那样的

<input type='text' name='field_name_0' id='id_field_name_0' attrs='attrs'>
<input type='text' name='field_name_1' id='id_field_name_1' attrs='attrs'>

根据documentation Django 2中的新内容。*
您可以添加单独的属性。

# Free to add attributes that you want
'start': forms.SplitDateTimeWidget(
    date_attrs({'class':'datepicker'}), # or override the ID, "id":id
    time_attrs({'class':'timepicker'}),
)

由于我不知道您在项目中使用的日期时间类型 Timepicker 。因此,在js中,按照常规名称class ...

调用每个人
$(".datepicker").datepicker();
$(".timepicker").timepicker();