2011-01-20 184 views
1

我有一個django表單(forms.Form)。每一個表單字段有像初始值,django表單驗證:驗證初始值

 

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

 

當某一個職位這種形式不改變初始值(即不輸入任何作爲城中,城場會「在這裏你的城市」)。 form.is_valid()不會引發驗證錯誤。有什麼辦法可以使驗證失敗?是否有任何內置方法/屬性可用,我可以調用/設置使表單驗證失敗?或者我必須手動驗證它?

+0

如果它是一個普通的CharField,它爲什麼會失敗? – 2011-01-20 09:08:10

回答

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將是值得的。