Использую Django 2.2
USE_TZ = True
В модели поле:
class Training(UuidBasedModel):
client = models.ForeignKey('common.User', on_delete=models.CASCADE, verbose_name=_('Client'))
canceled = models.BooleanField(default=False, verbose_name=_('Canceled'))
cancel_reason = models.CharField(default='', max_length=255, blank=True, verbose_name=_('Cancel reason'))
training_datetime = models.DateTimeField(default=timezone.localtime, verbose_name=_('Training date and time'))
Форма следующая:
class TrainingForm(forms.ModelForm):
def clean(self):
if self.cleaned_data['client'].trainings_list.filter(training_datetime__date=self.cleaned_data['training_datetime'].date()).exists():
raise forms.ValidationError({'client': self.SECOND_TRAINING_FOR_SINGLE_CLIENT_ERROR})
class Meta:
model = models.Training
fields = '__all__'
widgets = {
'training_datetime': forms.DateTimeInput(attrs={'type': 'datetime-local'}),
}
Проблемы:
1) не вставляется значение по умолчанию
2) после отправки формы на этапе clean случается KeyError, отсутствует training_datetime.
Если убрать аттрибут {'type': 'datetime-local'} с виджета поля - все начинает работать.
Но надо именно datetime-local поле с нативными контролами, а datetime - deprecated.
помимо всего прочего, datetime-local не поддерживается firefox. Так что может быть есть еще какие-то варианты, как решить эту проблему