自从Django ticket 6483 关闭和 Django 1.2 发布以来,现在有一种官方方法可以做到这一点。
如果您将USE_L10N 设置为False,您应该在settings.py 中指定DATE_INPUT_FORMATS 和DATETIME_INPUT_FORMATS。以下是我用于此的设置,基于转换默认值:
#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。