Формат ввода даты в 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 для получения дополнительной информации

Вернуться на верх