尽管在设置中指定了日期格式,但 Django 在运行测试时给了我一个“无效的日期格式”错误
Posted
技术标签:
【中文标题】尽管在设置中指定了日期格式,但 Django 在运行测试时给了我一个“无效的日期格式”错误【英文标题】:Django is giving me an "invalid date format" error when running tests despite specifying date format in settings 【发布时间】:2020-05-04 15:58:22 【问题描述】:我的设置文件有以下设置:
# settings.py
USE_L10N = False
DATE_INPUT_FORMATS = ['%m/%d/%Y']
在我的测试文件中,我正在创建一个需要日期的对象,如下所示:
# tests.py
my_model = Thing(a_date='11/22/2019').save()
但是,当我运行测试时,测试在创建对象时卡住并抛出错误:
django.core.exceptions.ValidationError: ["'11/22/2019' 值的日期格式无效。它必须是 YYYY-MM-DD 格式。"]
我有什么遗漏吗?为什么会抛出这个错误?
【问题讨论】:
models.py
中的 Thing 模型的结构如何?
【参考方案1】:
你需要设置DATE_INPUT_FORMATS
,因为DATE_FORMAT
设置Django如何显示日期。
更改您的代码:
DATE_INPUT_FORMATS = ['%m/%d/%Y']
【讨论】:
【参考方案2】:确保将USE_L10N
设置为FALSE
。
(https://docs.djangoproject.com/en/dev/ref/settings/#date-format)
另见:How to change the default Django date template format?
【讨论】:
我添加了DATE_INPUT_FORMATS = ['%m/%d/%Y']
,但仍然出现错误。
您确定正在找到并应用设置文件吗? (例如,***.com/questions/42927394/…)但是 Chris 可能对Forms
有意见,但对Models
问题没有意见(code.djangoproject.com/ticket/27364)。【参考方案3】:
也许您需要将广告 date_input_format 读取为 there 和 there
【讨论】:
【参考方案4】:据我所知,DATE_INPUT_FORMATS
与 Forms
相关,但与 Models
无关。
针对同一问题提出了(无效)票证here。
【讨论】:
好吧,不是在模型级别,而是在表单级别。所以例如如果用户以ModelForm
中定义的格式之一输入日期并保存表单,则一切正常。如果您尝试使用这些格式直接在程序中创建模型,它将无法正常工作。让我这样说:DATE_INPUT_FORMATS 用于用户交互以上是关于尽管在设置中指定了日期格式,但 Django 在运行测试时给了我一个“无效的日期格式”错误的主要内容,如果未能解决你的问题,请参考以下文章
尽管在 CMake 中指定了库,但未定义的引用错误(与 libtorch 链接的问题(C++11 ABI?)
IntelliJ IDEA 13 使用 Java 1.5,尽管设置为 1.7
登录失败,虽然我在我的 RDS 实例的安全组中指定了入站规则