Существует официальный способ сделать это сейчас с момента закрытия билета Django 6483 и выпуска Django 1.2.
Если для USE_L10N
установлено значение False
, вам нужно указать DATE_INPUT_FORMATS
и DATETIME_INPUT_FORMATS
в своем settings.py
. Вот настройки, которые я использую для этого на основе преобразования значений по умолчанию:
#dd/mm/yyyy and dd/mm/yy date & datetime input field settings
DATE_INPUT_FORMATS = ('%d-%m-%Y', '%d/%m/%Y', '%d/%m/%y', '%d %b %Y',
'%d %b, %Y', '%d %b %Y', '%d %b, %Y', '%d %B, %Y',
'%d %B %Y')
DATETIME_INPUT_FORMATS = ('%d/%m/%Y %H:%M:%S', '%d/%m/%Y %H:%M', '%d/%m/%Y',
'%d/%m/%y %H:%M:%S', '%d/%m/%y %H:%M', '%d/%m/%y',
'%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M', '%Y-%m-%d')
Если для USE_L10N
установлено значение True
, вам нужно будет использовать FORMAT_MODULE_PATH
.
Например, мой LANGUAGE_CODE
установлен на en-au
, мой сайт называется golf
, а мой FORMAT_MODULE_PATH
установлен на golf.formats
, поэтому моя структура каталогов выглядит следующим образом :
golf/
settings.py
...
formats/
__init__.py
en/
__init__.py
formats.py
и настройки DATE_INPUT_FORMATS
и DATETIME_INPUT_FORMATS
находятся в formats.py
вместо settings.py
.