[Solved] How can I set a DateField format in django from the model?

I am creating a django application and I have the next problem: this error is shown when I want to set a date:

ValidationError [u"'12/06/2012' value has an invalid date format. It must be in YYYY-MM-DD format.

"]

For this model:

class ModelA(models.Model):

    date1 = models.DateField(null=True)
    date2 = models.DateField(null=True)

How can I set the DateField format to be %m/%d/%Y.

The option "input_formats" is not recognized.

Thank you!

Solution #1:

As @bruno as mentioned in his answer, input_formats is a forms field, however it can be used to control the date format saved from the model.

In settings.py set DATE_INPUT_FORMATS as below:

DATE_INPUT_FORMATS = ['%d-%m-%Y']

And in your form you could do something like below:

class ClientDetailsForm(ModelForm):
    date_of_birth = DateField(input_formats=settings.DATE_INPUT_FORMATS)
    class Meta:
       model = ModelA
Respondent: Vaulstein
Solution #2:

input_formats is a forms.DateField option, not a model.DateField option. You have to set it in your form, not in your models.

Solution #3:

You could also use the LANGUAGE_CODE to get the correct date formate for the local.
LANGUAGE_CODE ='en-GB'
Then have DATE_INPUT_FORMATS = ['%d-%m-%Y', '%Y-%m-%d'] in the settings.py which can be called when needed at anytime.

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

Respondent: Ibby
The answers/resolutions are collected from stackoverflow, are licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 .

Leave a Reply

Your email address will not be published.