我在后端使用Django来保存用户输入的日期。然后,我想允许用户更新日期输入,方法是将他们带到一个新页面,向他们显示旧的日期输入,并允许他们更新它。
我在前端使用一个日期拾取器输入字段,方便用户选择日期。
在我输入日期后,我去更新页面更改它,更新页面上的日期选择器输入字段每次都是空的。
在控制台上我看到
The specified value "Jul. 4, 1776" does not conform to the required format, "yyyy-MM-dd".
我认为问题在于,当我从数据库中检索日期时,它会以不同的格式进入,而不是预期的格式。日期来自后端,格式为1776年7月4日,前端表单需要在177607-04。
我想知道我怎么能解决这个问题,所以前端和后端都很高兴,用户输入的旧日期显示在更新页面日期拾取器输入字段
settings.py中的DATE_FORMAT没有为我解决问题
日期以'yyyy-mm-dd'格式存储在数据库中,为了避免此Javascript错误消息,我必须在表单定义format='%Y-%m-%d'
中指定相同的格式。forms.SelectDateWidget()
工作良好,但我不想使用它。
class MyForm(forms.ModelForm):
class Meta:
model = MyModel
fields = ['id', 'title', 'summary_img', 'summary_txt', 'msg_nextdate']
widgets = {
'summary_txt': forms.Textarea(attrs={'rows':6}),
'msg_nextdate': forms.DateInput(attrs={'type': 'date'}, format='%Y-%m-%d'),
# 'msg_nextdate': forms.SelectDateWidget()
}
如果在settings.py中设置了USE_I18N = True
,日期显示web导航取决于计算机的区域设置。
- 美国/英国格式为mm/dd/yyyy
- FR/BE格式的dd/mm/yyyy
你可以试试:
添加到你的settings.py:
DATE_FORMAT = 'YYYY-MM-DD'
或
{{my_date|date:'Y-m-d'}}
把这个放到settings.py似乎解决了这个问题
DATE_FORMAT = 'Y-m-d'