【问题标题】:how to change default dateformat AAAA-MM-DD to dd/mm/yyyy in Django?如何在 Django 中将默认日期格式 AAAA-MM-DD 更改为 dd/mm/yyyy?
【发布时间】:2009-11-04 22:12:40
【问题描述】:

我的语言环境日期格式是 dd/mm/yyyy,而 Django 正在请求 AAAA-MM-DD

当用户输入 04/11/2009 Django 引发时:

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

我使用简单的 html 输入字段 type="text",而不是 forms.DateField

谢谢:)

【问题讨论】:

    标签: python django date-format


    【解决方案1】:

    我假设您使用的是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

    【讨论】:

    • 丰富,我做了你的建议,但仍然存在同样的问题:ValidationError Exception Value: Introduzca una fecha válida en formato AAAA-MM-DD。
    • 你能粘贴完整的代码吗?来自 forms.py 和 views.py?
    • 我在您的代码中注意到一些问题,在尝试查明 ValidationError 之前必须解决这些问题。最值得注意的是 is_valid 应该是 is_valid()。我对粘贴的代码 (pastebin.com/d29e92c68) 进行了修改,并突出显示了我修改的重要行。
    • (pastebin.com/d29e92c68) 未知的帖子 ID,它可能已过期或被删除 :( 你把它设置为 1 天过期吗?
    【解决方案2】:

    根据 OP 的帖子和 cmets,看起来这里不仅仅是使用 input_formats 作为日期字段,但您会想要这样做。消息“以 YYYY-MM-DD 格式输入有效日期”是一个例外,NOT 是表单验证错误。如果您尝试使用不是“YYYY-MM-DD”的日期字符串保存模型实例,则会出现此异常。

    需要的是在表单中使用一个 DateField,然后使用清理后的数据实例化模型,这是一个 datetime 对象。看起来 OP 使用字符串而不是日期时间对象来实例化模型。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-29
      • 1970-01-01
      相关资源
      最近更新 更多