如何从模型中在 django 中设置日期字段格式



我正在创建一个 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.pyDATE_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。我的表单是从模型自动生成的。模型类

相关内容

  • 没有找到相关文章

最新更新