Django forms.DateInput не реагирует на формат dd/mm/yyyy
в настоящее время у меня проблемы с тем, чтобы валидация ввода работала как ожидалось в Django DateInput
Насколько я понимаю, формат по умолчанию для DateInput будет "%Y-%m-%d", если его не трогать, однако явное задание формата "%d/%m/%Y" по-прежнему вызывает ошибки валидации.
Вот некоторые примеры
Input: 25/03/1981
Ожидается: Действительная дата (Мы ожидаем, что это значение не вызовет ошибку валидации)
. Факт: Введите действительную дату.
Ввод: 1/07/1981
Ожидается: Дата разобрана как 1 июля
. Фактическая: Дата разобрана как 7 января (т.е. дата и месяц разбираются вместо друг друга)
forms.py
class PatientForm(ModelForm):
class Meta:
# Make form look nice from here
model = Patient
fields = ('PAS_number', 'first_name', 'middle_name',
'surname', 'DOB', 'priority_code',
'patient_information', 'patient_status')
widgets = {
'PAS_number': forms.NumberInput(
attrs={'class': 'form-control'}),
'first_name': forms.TextInput(
attrs={'class': 'form-control'}),
'middle_name': forms.TextInput(
attrs={'class': 'form-control'}),
'surname': forms.TextInput(
attrs={'class': 'form-control'}),
'DOB': forms.DateInput(
format=('%d/%m/%Y'), attrs={'class': 'form-control'}),
'priority_code': forms.Select(
attrs={'class': 'form-control'}),
'patient_information': forms.Textarea(
attrs={'class': 'form-control'}),
'patient_status': forms.Select(
attrs={'class': 'form-control'}),
}
Кварг format на DateInput просто управляет отображением начального значения - он не управляет тем, как обрабатываются представленные данные. Из документации:
формат: Формат, в котором будет отображаться начальное значение этого поля.
У вас есть два варианта:
Измените настройку
DATE_INPUT_FORMATS, чтобы указать форматы, которые вы хотите принимать для ввода - это повлияет на все вводимые даты.Укажите
input_formatsна поле формы (не на ее виджете). ДляModelFormэто означает переопределение поля по умолчанию.