如何将日期选择器和时间选择器添加到Django Forms.SplitDateTimeField?

Jam*_*mes 1 django datetimepicker twitter-bootstrap django-crispy-forms

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

class MyForm(forms.ModelForm):

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

如何在显示的每个单独的输入框中添加日期选择器和时间选择器?

设置:

'start': forms.SplitDateTimeWidget(attrs={'type': 'date'})
Run Code Online (Sandbox Code Playgroud)

使两个输入都为日期选择器,但我需要第二个作为时间选择器。

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

Lem*_*eur 5

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

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

渲染将是这样的

<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'>
Run Code Online (Sandbox Code Playgroud)

根据该文件新的在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'}),
)
Run Code Online (Sandbox Code Playgroud)

由于我不知道哪种类型的Datetime,因此您在项目中都不使用Timepicker。因此,在您的js通话中,每个人都使用其常规名称class...

$(".datepicker").datepicker();
$(".timepicker").timepicker();
Run Code Online (Sandbox Code Playgroud)