Django 提交自定义日期格式的表单时出现ValidationError

Django 提交自定义日期格式的表单时出现ValidationError,django,django-forms,django-views,Django,Django Forms,Django Views,当提交django表单时,我得到一个ValidationError 在我的表格中,这是我的输入:2017年1月1日 但是django告诉我格式必须是“AAAA-MM-GG”。 在这个异常位置:/usr/local/lib/python3.5/dist-packages/django/db/models/fields/init.py到python,第1271行 这是我项目的代码: # models.py class Archivio(models.Model): sys_codice

当提交django表单时,我得到一个ValidationError

在我的表格中,这是我的输入:2017年1月1日 但是django告诉我格式必须是“AAAA-MM-GG”。
在这个异常位置:/usr/local/lib/python3.5/dist-packages/django/db/models/fields/init.py到python,第1271行

这是我项目的代码:

# models.py
class Archivio(models.Model):  
    sys_codice = models.AutoField(primary_key=True)
    some_other_field ...

class QuoteIscrizione(models.Model):  
    sys_chiave = models.AutoField(primary_key=True)
    sys_cod = models.ForeignKey(Archivio, on_delete=models.CASCADE)
    data_quota = models.DateField(blank=True, null=True)  


# forms.py
class ArchivioSearchForm(forms.Form):  
    data_quota = forms.DateField(widget=forms.DateInput(format='%d/%m/%Y'), input_formats=('%d/%m/%Y',), required=False)  

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        for field in self:
            field.field.widget.attrs['class'] = 'form-control '
                if type(field.field.widget) is DateInput:
                    field.field.widget.attrs['class'] += 'datepicker'  
    def clean(self):
        data_quota = self.cleaned_data['data_quota']  
        return self.cleaned_data

# views.py  
def ArchivioSearchView(request):  
    model = Archivio
    form = ArchivioSearchForm()   

    if request.GET.get('data_quota'):  
        selection = Archivio.objects.filter(Q(quoteiscrizione__data_quota__gte=request.GET.get('data_quota'))  
        return render(request, 'search_template.html', {'selection':selection, 'form':form})  

# search_template.html  
<form action="" method="get" class="form-horizontal">
    <div class="form-group form-group-md">            
    <input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
        {% for field in form %}
            <div class="form-group row">
                <label class="col-md-3 col-form-label" for="{{ field.id_for_label }}">{{ field.label }}</label>
                <div class="col-md-6">
                    {{ field.as_widget() }}
                </div>
            </div>
        {% endfor %}
    <input type="submit" value="Confermo" />  
    </div>
</form>
{% for select in selection %}
    <h4><li><a href="{{ url('archivio_detail', args=[select.pk]) }}">{{ select.nominativo }}</a></li></h4>
{% endfor %}
我已尝试在我的设置上使用。当然,在将use\u L10N=False设置为 日期输入格式=['%d/%m/%Y']

我还尝试在for loop上的forms.py oninit函数上使用:

if type(field.field.widget) is DateInput:  
    field.field.widget.input_formats = ['d%/%m/%Y']  
我不仅尝试了列表,还尝试了类似于“%d/%m/%Y”的字符串

我还发现,即使我的输入是2017/01/01,也会发生此错误

我不知道我做错了什么。Django继续使用格式为“YYYY-MM-DD”的日期,即使我覆盖了DateField小部件的所有可能方法或参数


谢谢你们所有人,这将花费你们一些时间来帮助我

在表单上声明变量时,需要在DateInput小部件上设置格式,以及输入格式,如:

data_quota = forms.DateField(widget=forms.DateInput(format ='%d/%m/%Y'), input_formats=('%d/%m/%Y',), required=False) 

您好,这是一个有趣的问题,但您可能希望将标题更改为“提交自定义日期格式的表单时验证错误”,以帮助人们在只看到标题时查找和理解您的问题。谢谢您的建议,我将立即执行!我将其添加到表单的字段中,但得到的验证错误与格式必须为“YYYY-MM-DD”的验证错误相同!,你知道它是什么吗?我不知道为什么,但如果我在我的ArchivioSearchView()函数中导入datetime,并使datetime.datetime.StrTime(request.GET.GET('data_quota'),%d/%m/%Y')正常工作,我不会收到任何其他错误
data_quota = forms.DateField(widget=forms.DateInput(format ='%d/%m/%Y'), input_formats=('%d/%m/%Y',), required=False)