У меня есть следующая модель, где у меня есть DateField:
class E(models.Model):
name = models.CharField(max_length=255
description = models.TextField(max_length=255)
start_date = models.DateField(verbose_name='Start Date')
ModelForm:
class EventModelForm(forms.ModelForm):
class Meta:
model = Event
fields = ['name', 'description','start_date']
def clean_start_date(self):
datetime_format = '%a %b %d %Y'
start_date = self.cleaned_data['start_date']
return datetime.strptime(start_date, datetime_format)
Моя проблема в том, что Django игнорирует метод clean для start_date, но учитывает методы очистки для других полей.
Поэтому я использую отладчик для проверки и вижу, что оно появляется в change_data
, но не в cleaned_data
changed_data: <class 'list'>: [name', 'description', ''start_date']
cleaned_data: name, description
, что странно, поэтому я проверил ввод и выглядит нормально:
<input name="start_date" class="c-fi' type="text">
Я не понимаю, почему не вызывается метод clean, вместо этого проверка на модели не выполняется, поэтому мне нужно очистить, чтобы изменить формат даты перед сохранением.