django覆盖表单清理方法

Joh*_*ohn 6 django django-forms

当覆盖表单清理方法时,您如何知道它在任何字段上的验证失败?例如,如果我覆盖干净的方法,如何在下面的表格中如何知道表格在任何字段上的验证是否失败?

class PersonForm(forms.Form):
    title = Forms.CharField(max_length=100)
    first_name = Forms.CharField(max_length=100)
    surname = Forms.CharField(max_length=100)
    password = Forms.CharField(max_length=100)

def clean(self, value):
    cleaned_data = self.cleaned_data

    IF THE FORM HAS FAILED VALIDATION:
        self.data['password'] = 'abc'
        raise forms.ValidationError("You have failed validation!")
    ELSE:
        return cleaned_data 
Run Code Online (Sandbox Code Playgroud)

谢谢

Mar*_*vin 10

您可以检查是否已将任何错误添加到错误dict中:

def clean(self, value):
    cleaned_data = self.cleaned_data

    if self._errors:
        self.data['password'] = 'abc'
        raise forms.ValidationError("You have failed validation!")
    else:
        return cleaned_data 
Run Code Online (Sandbox Code Playgroud)

奖金!您可以检查特定字段的错误:

def clean(self, value):
    cleaned_data = self.cleaned_data

    if self._errors and 'title' in self._errors:
        raise forms.ValidationError("You call that a title?!")
    else:
        return cleaned_data 
Run Code Online (Sandbox Code Playgroud)


ste*_*anw 5

如果您的数据未通过验证,则您的Form实例将没有cleaned_data属性

有关访问“干净”数据的Django文档

使用self.is_valid()