我在一个表单上分成两个元素的日期字段如下:
class InvoiceForm(ModelForm):
date = forms.SplitDateTimeField(input_time_formats=['%H:%M'], input_date_formats=['%d.%m.%Y'])
在 init :
上def __init__(self,*args, **kwargs):
self.fields['date'].widget.widgets[0].attrs.update({'class' : 'datepicker'}) #assign the class date to the datefield
self.fields['date'].widget.widgets[1].attrs.update({'class' : 'timepicker'}) #assign the class date to the datefield
在我的模板上,我尽可能地尝试不制作自定义表格,但是使用django完成的自动生成的表格如下:
<form id="form_invoice_add">
{% csrf_token %}
<table class="table">
{{ form.as_table }}
</table>
不幸的是,两个分裂字段是在同一行上生成的。
<table>
<tbody>
<tr>
<th><label for="id_date_0">Date :</label></th>
<td><input class="datepicker" id="id_date_0" name="date_0" type="text" value="2015-10-08"><input class="timepicker" id="id_date_1" name="date_1" type="text" value="18:29:43"></td>
</tr>
</tbody>
</table>
我应该在另一个td上有第二个字段(时间字段),如下所示。如果不通过django修改我自动生成的表,我该怎么办?
<table>
<tbody>
<tr>
<th><label for="id_date_0">Date :</label></th>
<td><input class="datepicker" id="id_date_0" name="date_0" type="text" value="2015-10-08"></td>
</tr>
<tr>
<th><label for="id_date_0">Date :</label></th>
<td><input class="timepicker" id="id_date_1" name="date_1" type="text" value="18:29:43"></td>
</tr>
</tbody>
这是否意味着我应该将表单更改为:
class InvoiceForm(ModelForm):
separate_time = forms.TimeField(input_formats=['%H:%M'])
separate_date = forms.DateField(input_formats=['%d.%m.%Y'])
def clean(self):
cleaned_data = super(InvoiceForm, self).clean()
self.cleaned_data['date'] = datetime.datetime.combine(self.cleaned_data['separate_date'], self.cleaned_data['separate_time'])
答案 0 :(得分:0)
嗯,你没有很多选择来实现你的目标。 我看到的是你实际上可以有两个单独的字段:带有适当小部件的日期和时间,以及不会在模板中显示的结果日期时间字段,将以表单的干净方法填充。