首页 > 解决方案 > self.errors 为空,但在模板中显示错误

问题描述

我不敢相信:

表格.py:

class MyForm(forms.Form):
    field1 = forms.CharField(label='somelabel', max_length=254, widget=forms.TextInput(), required = False)

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        #Focus on form field whenever error occurred
        logger.error('Warning')
        errorList=list(self.errors)
        logger.error('{}'.format(self.errors))
        for item in errorList:
            self.fields[item].widget.attrs.update({'autofocus': ''})
            break

视图.py:

  if request.method == 'POST':
        form1 = OtherForm(request.POST,prefix='other')
        form2 = MyForm(request.POST, prefix='my')
        if form1.is_valid():
            (...) 
        if form2.is_valid():
             form2.add_error('field1','This is error on field1')

    else:
        form1 = OtherForm( prefix='other')
        form2 = MyForm(prefix='my')

    return render(request,'vote.html', context = {
        'form1':form1,
        'form2':form2,
    })

我可以在 Field1 下方以漂亮的红色看到“这是 field1 上的错误”,我可以在调试中看到警告,但在调试中没有错误。self.errors 是空的...帮助!

标签: django-viewsdjango-forms

解决方案


所以解决方案是在添加错误后设置自动对焦:

form2.add_error('field1','This is error on field1')
form2.fields['field1'].widget.attrs.update({'autofocus': ''})

推荐阅读