Формат ввода даты в django интерпретируется неправильно
Я пытаюсь создать модель и соответствующую форму ModelForm в django, содержащую DateField/Input.
from django.db import models
class MyModel(models.Model):
myDate = models.DateField()
from django import forms
class MyModelForm(forms.ModelForm):
class Meta:
model = MyModel
fields = "__all__"
widgets = {
'myDate': forms.DateInput(format=("%d/%m/%Y"))
}
Но, к сожалению, когда я ввожу дату в форму, которая получается из MyModelForm, день и месяц меняются местами. Например, 1/2/22 получается 2 января 2022 года вместо 1 февраля 2022 года. Что еще мне нужно сделать, чтобы дата интерпретировалась правильно?
Указание формата только в форме вашего виджета используется только как отображение, вам все еще нужно передать его для указания поля myDate как DateField в вашей форме:
from django.db import models
class MyModel(models.Model):
myDate = models.DateField()
from django import forms
class MyModelForm(forms.ModelForm):
myDate = forms.DateField(input_formats=["%d/%m/%Y"])
class Meta:
model = MyModel
fields = "__all__"
widgets = {
'myDate': forms.DateInput(format=("%d/%m/%Y"))
}
Другим вариантом настройки может быть добавление формата внутри переменной DATE_INPUT_FORMAT в settings.py. См. https://docs.djangoproject.com/en/4.0/ref/settings/#date-input-formats для получения дополнительной информации