Django 在验证 modelform 日期字段时期望格式错误

Django expects wrong format when validating modelform datefield

我有一个页面,用户可以在其中以 dd/mm/yyyy 格式输入一些日期。

在我的设置文件中我有这个:

DATE_INPUT_FORMATS = ('%d/%m/%Y','%Y/%m/%d', '%Y-%m-%d',) 
USE_TZ = True
USE_L10N = True
TIME_ZONE = 'Europe/Rome

我用django bootstrap4 datetime picker plus

该字段呈现如下:(对于屏幕截图,我深表歉意,我无法在不转义的情况下复制 html,它看起来非常混乱)

问题

问题是当我以 dd/mm/yyyy 格式输入日期时,它使用美国格式 (mm/dd/yyyy) 来验证它们。因此,如果我输入 27/12/2021,它将尝试保存 [2021 年 12 月 27 日],但验证失败。阻止保存表单集。

我不明白的是,当我设置了三个单独的 DATE_INPUT_FORMATS 和 none 时,django 到底是从哪里想到它应该使用美国格式来验证日期的?美式格式?

这是一张图片,显示在页面上以正确的格式收集日期

响应:[{'start_date': ['Enter a valid date.'], 'end_date': ['Enter a valid date.']}]

表格

这是我现在所在的位置:

class EducationForm(forms.ModelForm):

# def clean_start_date(self):
#     print(self.cleaned_data['start_date'])
#     return datetime.strptime((self.cleaned_data['start_date']), '%Y-%m-%d')
# def clean_end_date(self):
#     return datetime.strptime((self.cleaned_data['end_date']),  '%Y-%m-%d')

    class Meta:
        model = Education
        fields = ['start_date', 'end_date', 'institution', 'title']
        # localized_fields = ('start_date', 'end_date',)
        widgets = {
            'start_date': DatePickerInput(attrs={
                'data-provide' : 'datepicker',
                'class' : 'form-control my-date-picker',
                # 'data-date-format' : "DD/MM/YYYY"
            },
            options={
                "format": "DD/MM/YYYY",
            }),
            'end_date': DatePickerInput(attrs={
                'placeholder': 'Ongoing',
                'data-provide' : 'datepicker',    
                'class' : 'form-control my-date-picker',           
                # 'data-date-format' : "DD/MM/YYYY"
            },
            options={
                "format": "DD/MM/YYYY",
            }),

模板

模板中没有任何特别的内容。我只是将日期时间字段呈现为 {{ field }}。

最终解决方案是将 USE_L10N = False 添加到我的设置文件中。 似乎除非指定,django 将忽略 DATE_INPUT_FORMATS

的内容