如何在django中从模型中设置DateField格式?

0tdrvxhp  于 2023-02-06  发布在  Go
关注(0)|答案(5)|浏览(162)

我正在创建一个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)

如何将DateField格式设置为%m/%d/%Y
无法识别选项"input_formats"
谢谢大家!

uklbhaso

uklbhaso1#

正如@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
ca1c2owp

ca1c2owp2#

input_formatsforms.DateField选项,而不是model.DateField选项。您必须在表单中设置它,而不是在模型中。

x7yiwoj4

x7yiwoj43#

您还可以使用LANGUAGE_CODE来获取本地的正确日期格式。LANGUAGE_CODE ='en-GB'然后在settings.py中包含DATE_INPUT_FORMATS = ['%d-%m-%Y', '%Y-%m-%d'],可以在需要时随时调用settings.py

date_birth = forms.DateField(label='Date of birth', widget=forms.SelectDateWidget(years=YEAR_CHOICES, input_formats= DATE_INPUT_FORMATS))
yyyllmsg

yyyllmsg4#

在www.example.comsettings.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)将无法实现此目的。

vwoqyblh

vwoqyblh5#

对于那些在2023年看这个的人!!!为了让这个工作,我只是补充了一句:

DATE_INPUT_FORMATS = ["%d.%m.%Y"]
USE_L10N = False

在我的www.example.com中settings.py,它工作了。我现在可以在我的表单中输入20.12.2020。我的表单是从模型自动生成的。模型类

相关问题