如何在Django中将默认日期格式从AAAA-MM-DD更改为dd/mm/yyyy?

0 投票
2 回答
4152 浏览
提问于 2025-04-15 15:40

我的地区日期格式是日/月/年(dd/mm/yyyy),但Django需要的是年-月-日(AAAA-MM-DD)格式。

当用户输入04/11/2009时,Django会报错:

_('Enter a valid date in YYYY-MM-DD format.')) 

我使用的是简单的HTML输入框,类型是"text",而不是forms.DateField。

谢谢 :)

2 个回答

1

根据提问者的帖子和评论,似乎这里的问题不仅仅是使用输入格式来处理日期字段,虽然你确实需要这样做。信息“请输入有效的日期,格式为YYYY-MM-DD”是一个异常提示,而不是表单验证错误。如果你尝试用一个不是'YYYY-MM-DD'格式的日期字符串来保存模型实例,就会出现这个异常。

你需要在表单中使用一个日期字段(DateField),然后用清理过的数据来创建模型实例,这个数据是一个日期时间对象(datetime object)。看起来提问者是用一个字符串来创建模型,而不是用日期时间对象。

这部分内容在Django文档中讨论了如何准备DateField数据:https://docs.djangoproject.com/en/dev/ref/models/instances/?from=olddocs#what-happens-when-you-save

5

我猜你正在使用一个叫做 forms.DateField 的东西。如果是这样的话,你需要提供一个叫做 input_formats 的参数,像这样:

class MyForm(forms.Form):
    start_date = forms.DateField(input_formats=['%d/%m/%Y'])

这个 input_formats 参数就是用来接受你想要的日期格式的列表。

想了解更多信息,可以查看这个链接:http://docs.djangoproject.com/en/dev/ref/forms/fields/#datefield

撰写回答