django表单验证:验证初始值

时间:2011-01-20 08:00:59

标签: django validation forms

我有一个django表单(forms.Form)。每个表单字段都有初始值,如


class SomeForm(forms.Form):
  city = forms.CharField(initial="Your city here")


当有人发布此表单而不更改初始值时(即,不输入任何内容作为城市,城市字段将是“您的城市”)。 form.is_valid()不会引发验证错误。有什么办法可以让验证失败吗?是否有任何内置的方法/属性可以调用/设置以使表单验证失败?或者我是否必须手动验证它?

1 个答案:

答案 0 :(得分:7)

您必须使用Django表单clean_fieldname方法手动执行验证,如下所示:

class SomeForm(forms.Form):
    city = forms.CharField(initial='Your city here')

    def clean_city(self):
        city_name = self.cleaned_data['city']
        if city_name in ['Your city here']:
            raise forms.ValidationError('Enter a city name.')
        return city_name

如果您使用的是Django 1.2或更高版本,custom validators值得付出努力。