在“中发现错误后,如何继续检查错误”;如果Django,Python

在“中发现错误后,如何继续检查错误”;如果Django,Python,python,django,django-forms,django-templates,Python,Django,Django Forms,Django Templates,我有这段代码来检查表单中的错误。用户出错后,它会显示首次发现的错误。但若错误属于多个错误,它将只显示第一个错误 #forms.py def clean_file_name(self): name = self.cleaned_data['file_name'] if len(name) < 2: raise forms.ValidationError('File name is too short') if F

我有这段代码来检查表单中的错误。用户出错后,它会显示首次发现的错误。但若错误属于多个错误,它将只显示第一个错误

#forms.py
    def clean_file_name(self):
        name = self.cleaned_data['file_name']
        if len(name) < 2:
            raise forms.ValidationError('File name is too short')
        if FileDescription.objects.filter(file_name = name).exists():
            raise forms.ValidationError('File with this name already exists')
        else:
            return name

#template
<ul>
  {% for field in form %}
    {% for error in field.errors %}
    <li>{{ error }}</li>
    {% endfor %}
  {% endfor %}
</ul>
#forms.py
def clean_文件名(自身):
name=self.cleaned_数据['file_name']
如果len(名称)<2:
raise forms.ValidationError('文件名太短')
如果FileDescription.objects.filter(文件名=name).exists():
raise forms.ValidationError('具有此名称的文件已存在')
其他:
返回名称
#模板
    {%形式的字段为%} {%字段中有错误。错误%}
  • {{error}}
  • {%endfor%} {%endfor%}
若用户将输入“a”,那个么数据库中已经存在同名的文件(假设在我写长度检查之前它就在那个里) 产出将是:

“文件名太短”


但我希望代码中的两个错误都能显示出来,希望能有所帮助

if isinstance(self.errors.get('field_name'), forms.util.ErrorList):
    self.errors['field_name'].append(_('My error'))
else:
    self.errors['field_name'] = forms.util.ErrorList([_('MyError')])
这个怎么样

def clean_file_name(self):
    name = self.cleaned_data['file_name']
    error = ''
    if len(name) < 2:
        error += 'File name is too short'
    if FileDescription.objects.filter(file_name = name).exists():
        if error:
            error += ' ' 
        error += 'File with this name already exists'
    if error:
        raise forms.ValidationError(error)
    return name
def clean_文件名(self):
name=self.cleaned_数据['file_name']
错误=“”
如果len(名称)<2:
错误+='文件名太短'
如果FileDescription.objects.filter(文件名=name).exists():
如果出现错误:
错误+=''
错误+='具有此名称的文件已存在'
如果出现错误:
引发表单。ValidationError(错误)
返回名称
还是你想让它们成为两颗独立的子弹?如果是这样,您需要将它们添加到self.errors列表中(参见Alexander的回答),然后引发ValidationError以确保表单不会处理