как изменить формат даты по умолчанию AAAA-MM-DD на дд/мм/гггг в Django?
-
16-09-2019 - |
Вопрос
Мой региональный формат даты — дд/мм/гггг, а Django запрашивает AAAA-MM-DD.
когда пользователь вводит 11.04.2009, Django вызывает:
_('Enter a valid date in YYYY-MM-DD format.'))
Я использую простое поле ввода HTML type="text", а не form.DateField
Спасибо :)
Решение
Я предполагаю, что вы используете forms.DateField
.Если да, то вам необходимо предоставить input_formats
аргумент такой:
class MyForm(forms.Form):
start_date = forms.DateField(input_formats=['%d/%m/%Y'])
input_formats просто принимает список форматов, которые вы хотите принять.
Видеть http://docs.djangoproject.com/en/dev/ref/forms/fields/#datefield Чтобы получить больше информации.
Другие советы
Судя по сообщению и комментариям ОП, похоже, что здесь есть нечто большее, чем просто использование input_formats для поля даты, хотя вы захотите это сделать.Сообщение «Введите допустимую дату в формате ГГГГ-ММ-ДД» является исключением и НЕТ ошибка проверки формы.Вы получите это исключение, если попытаетесь сохранить экземпляр модели, используя строку даты, отличную от «ГГГГ-ММ-ДД».
Что необходимо, так это использовать DateField в форме, а затем создать экземпляр модели с использованием очищенных данных, которые являются объектом datetime.Похоже, что ОП создавал экземпляр модели с помощью строки, а не объекта datetime.
В этом разделе документации Django обсуждается подготовка данных DateField:https://docs.djangoproject.com/en/dev/ref/models/instances/?from=olddocs#what-happens-when-you-save