forms.SplitDateTimeField в две таблицы тд по шаблону
У меня есть поле даты, которое я разделил на две части формы следующим образом:
class InvoiceForm(ModelForm):
date = forms.SplitDateTimeField(input_time_formats=['%H:%M'], input_date_formats=['%d.%m.%Y'])
И на инициале:
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>
У меня должно быть второе поле (временное поле) на другом тд, как следует. Как мне это сделать, не меняя автоматически сгенерированную таблицу с помощью 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'])
1 ответ
Ну, у вас нет много вариантов для достижения вашей цели. Я вижу, что вы можете иметь два отдельных поля: дату и время с соответствующими виджетами, а также поле даты и времени результата, которое не будет отображаться в шаблоне и будет заполнено чистым методом формы.