Да, вы можете передать attrs = {'class': 'your_class'}, но он будет применять класс как к DateInput, так и к TimeInput.
Если вам нужно добавить разные классы для обоих полей, вам, вероятно, потребуется расширить SplitDateTimeWidget, переопределить init.
class MySplitDateTimeWidget(SplitDateTimeWidget):
def __init__(self, attrs=None, date_format=None, time_format=None):
date_class = attrs.pop('date_class')
time_class = attrs.pop('time_class')
widgets = (DateInput(attrs={'class' : date_class}, format=date_format),
TimeInput(attrs={'class' : time_class}, format=time_format))
super(SplitDateTimeWidget, self).__init__(widgets, attrs)
#forms.py
class MyForm(forms.Form):
test_field = forms.DateTimeField(widget=MySplitDateTimeWidget(attrs={'date_class' : 'foo', 'time_class' : 'bar'}))
Я протестировал это в Django 1.3, который будет выводить следующий html при использовании этого виджета в формах. DateTimeField с именем 'test_field':
<label for="id_test_field_0">Test field:</label>
<input id="id_test_field_0" class="foo" type="text" name="test_field_0">
<input id="id_test_field_1" class="bar" type="text" name="test_field_1">
Я пробовал различные способы скопировать входящие атрибуты, чтобы сохранить любые другие параметры, которые могут там быть, но я сталкиваюсь с ошибками, и, к сожалению, у меня на сегодня не хватает времени. Это должно помочь вам, но только позволит вам изменить атрибут класса полей.