Sev*_*ths 20 django django-forms
有什么方法可以让django将我的数据存储在postgresql中作为'dd-mm-yyyy'(如果需要)并让django表单验证'dd-mm-yyyy'?
(我尝试过没有太多成功的事情:
DATE_INPUT_FORMATS = ('%d-%m-%Y')
USE_I18N = True
USE_L10N = True
Run Code Online (Sandbox Code Playgroud)
并做了很多谷歌搜索但没有成功:(
Sev*_*ths 36
结果问题是我在settings.py
文件中需要ISO和UK日期格式,如下所示:
DATE_INPUT_FORMATS = ('%d-%m-%Y','%Y-%m-%d')
Run Code Online (Sandbox Code Playgroud)
然后将forms.py调整为以下内容:
class ClientDetailsForm(ModelForm):
date_of_birth = DateField(input_formats=settings.DATE_INPUT_FORMATS)
class Meta:
model = ClientDetails
Run Code Online (Sandbox Code Playgroud)
为什么USE_L10N = True
不能这样做我不知道!
Ski*_*Ski 20
DATE_INPUT_FORMATS
在settings.py中没有效果USE_I18N = True
.这是因为django将为活动区域设置加载特定格式.Django附带了许多不同语言环境的格式定义.
您可以覆盖django默认格式定义:
mysite/
formats/
__init__.py
en/
__init__.py
formats.py
Run Code Online (Sandbox Code Playgroud)
如django文档中所述:创建自定义格式文件
Ton*_*ony 11
在Sevenearths回答有评论
为什么
USE_L10N = True
不能这样做我不知道!
文档说这USE_L10N = True
是默认设置,但要使英国日期生效,LANGUAGE_CODE
还必须将其默认设置更改en-us
为en-GB
.
更改后,日期字段会自动接受格式"dd/mm/yyyy"和"yyyy-mm-dd"(可能还有其他格式,我没有全部测试过),无需input_formats = settings.DATE_INPUT_FORMATS
在每个表单日期字段中设置.