【问题标题】:Format for DateTimeField [duplicate]DateTimeField 的格式 [重复]
【发布时间】:2025-12-11 00:30:01
【问题描述】:

可能重复:
Converting string into datetime

在 Django 中,我收到此错误“以 YYYY-MM-DD HH:MM[:ss[.uuuuuu]] 格式输入有效日期/时间。”当我尝试将字符串“22-DEC-2009”分配给 model 中的 DateTimeField 时。

如何使 DateTimeField 接受格式为“22-DEC-2009”的日期字符串?

【问题讨论】:

    标签: python django


    【解决方案1】:

    您可以将输入格式作为input_formats 参数传递给DateTimeField,因此您可以这样做

    # you can keep a list of formats yourself, or copy from django 1.2 version e.g.
    # my_formats = fields.DEFAULT_DATETIME_INPUT_FORMATS + ['%d-%b-%Y']
    # for latest django use this
    from django.utils.formats import get_format
    my_formats = get_format('DATETIME_INPUT_FORMATS')
    field = DateTimeField(input_formats=my_formats,...)
    

    如果您直接想将 date-str 分配给 models.DateTimeField,最好的方法是事先将其转换为 datetime,例如

    mymodel.date_of_birth = datetime.datetime.strptime("22-DEC-2009", "%d-%b-%Y")
    

    【讨论】:

    • 不接受模型的参数 input_formats.DateTimeField。
    • @Vishal ,它说了什么?你用的是什么版本?
    • @Anurag 错误:“/django/db/models/fields/__init__.py”,第 459 行,在 init 字段中.__init__(self,verbose_name,name,* *kwargs) TypeError: __init__() got an unexpected keyword argument 'input_formats'” Django 版本:“1.1.1” /django/db/models/fields 不包含 DEFAULT_DATETIME_INPUT_FORMATS 但 /django/forms/fields.py 包含(其中使代码运行)有用的帖子:*.com/questions/466345/…
    • 是的 form.fields 没有 db
    • @hobs 在这种情况下从旧版本复制格式或使用新方法(编辑答案)
    最近更新 更多