django 日期输入格式未正确解释

django date input format is not interpreted properly

我正在尝试使用包含 DateField/Input.

的 django 设置模型和相应的 ModelForm
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 将导致 2022 年 1 月 2 日而不是 2022 年 2 月 1 日。我还需要做什么才能正确解释日期?

仅在你的widget的表单中指定格式只是​​作为显示,你仍然需要通过它来指定字段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")) 
        }

另一种设置方法是在 settings.py 中的 DATE_INPUT_FORMAT 变量中添加格式。有关更多信息,请参阅 https://docs.djangoproject.com/en/4.0/ref/settings/#date-input-formats