我正在开发一个 Django 项目,我想添加一个供本地使用的日期格式。根据文档,我已更新设置以使用本地日期时间格式:LinkSettings 如下:
我正在开发一个 Django 项目,我想添加一个供本地使用的日期格式。根据文档,我已更新设置以使用本地日期时间格式: 链接
设置如下:
DATE_INPUT_FORMATS = [
"%Y-%m-%d",
"%m/%d/%Y",
"%m/%d/%y",
"%b %d %Y",
"%b %d, %Y",
"%d %b %Y",
"%d %b, %Y",
"%B %d %Y",
"%B %d, %Y",
"%d %B %Y",
"%d %B, %Y",
'%d-%m-%Y',
'%d/%m/%Y'
]
DATETIME_INPUT_FORMATS = [
"%Y-%m-%d %H:%M:%S",
"%Y-%m-%d %H:%M:%S.%f",
"%Y-%m-%d %H:%M",
"%m/%d/%Y %H:%M:%S",
"%m/%d/%Y %H:%M:%S.%f",
"%m/%d/%Y %H:%M",
"%m/%d/%y %H:%M:%S",
"%m/%d/%y %H:%M:%S.%f",
"%m/%d/%y %H:%M",
'%d-%m-%Y %H:%M:%S',
'%d/%m/%Y %H:%M:%S'
]
但是对于表单字段,它仍然使用默认的日期时间格式,而不是采用设置文件中添加的日期时间格式。
在我的表单中,表单抛出验证错误,提示“请输入有效的日期/时间”
class CDetailsForm(forms.ModelForm):
class Meta:
model = CDetails
fields = ('c_date',)
widgets = {
'c_date': forms.DateTimeInput(
attrs={'class': 'datetimepicker-input datetime_stamp form-control', 'readonly': 'readonly'}),
}
def is_valid(self):
import pdb
pdb.set_trace()
result = super(CDetailsForm, self).is_valid()
return result
DateTimeInput 小部件代码表示它引用 DATETIME_INPUT_FORMATS 设置
class DateTimeInput(DateTimeBaseInput):
format_key = 'DATETIME_INPUT_FORMATS'
template_name = 'django/forms/widgets/datetime.html'
但在表单字段验证中,设置被完全忽略
> <project>/env/lib/python3.9/site-packages/django/forms/fields.py(384)to_python()
-> for format in self.input_formats:
(Pdb) self.input_formats
['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y']
(Pdb) self
<django.forms.fields.DateTimeField object at 0x128049c10>
(Pdb) value
'19-03-2024 17:25:17'
(Pdb)
期待建议或反馈。