我正在创建一个 django 应用程序,我有下一个问题:当我想设置日期时会显示此错误:
ValidationError [u"'12/06/2012' value has an invalid date format. It must be in YYYY-MM-DD format."]
对于此型号:
class ModelA(models.Model):
date1 = models.DateField(null=True)
date2 = models.DateField(null=True)
如何将日期字段格式设置为%m/%d/%Y
.
无法识别选项 "input_formats"
。
谢谢!
他的回答中提到的@bruno,input_formats
是一个表单字段,但它可以用来控制从模型中保存的日期格式。
在settings.py
设置DATE_INPUT_FORMATS
如下:
DATE_INPUT_FORMATS = ['%d-%m-%Y']
在您的表单中,您可以执行以下操作:
class ClientDetailsForm(ModelForm):
date_of_birth = DateField(input_formats=settings.DATE_INPUT_FORMATS)
class Meta:
model = ModelA
input_formats
是一个forms.DateField
选项,而不是model.DateField
选项。您必须在表单中设置它,而不是在您的模型中。
您还可以使用该LANGUAGE_CODE来获取本地的正确日期格式。 LANGUAGE_CODE ='en-GB'
然后在settings.py
中DATE_INPUT_FORMATS = ['%d-%m-%Y', '%Y-%m-%d']
,可以随时在需要时调用。
date_birth = forms.DateField(label='Date of birth', widget=forms.SelectDateWidget(years=YEAR_CHOICES, input_formats= DATE_INPUT_FORMATS))
在 settings.py 中,插入:
USE_L10N = False
DATE_INPUT_FORMATS = ['%d/%m/%Y']
- DATE_INPUT_FORMATS的数据类型必须是列表,包含字符串格式。 %d/%
- m/%Y 只是我选择的格式。
截至最近(2022 年 1 月),settings.py 默认不包含USE_L10N
(两者都不是DATE_INPUT_FORMATS
,但我想这个预计不会出现)。
看起来,虽然默认情况下不存在USE_L10N
,但它不仅存在于某个地方,而且还设置为 True,因为单独设置DATE_INPUT_FORMATS
(即不明确USE_L10N
False)不会解决问题。
对于那些在 2023 年观看此节目的人!!为了完成这项工作,我刚刚添加了:
DATE_INPUT_FORMATS = ["%d.%m.%Y"]
USE_L10N = False
在我的 settings.py 中,它奏效了。我现在可以在表格中输入 20.12.2020。我的表单是从模型自动生成的。模型类