2011-01-20 17 views
1

私はdjangoフォーム(forms.Form)を持っています。いくつかのいずれかが初期値を変更せずにこのフォームをポストするとき一人ひとりフォームフィールド(すなわち。市として何も入力せずに、都市フィールドが「ここにあなたの都市」になります)djangoフォームの検証:初期値の検証

 

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

 

、などの初期値を持っています。 form.is_valid()は検証エラーを発生させません。検証が失敗するようにする方法はありますか?どのようなinbuiltメソッド/プロパティを私は/フォームの検証を失敗するように設定することができます利用可能ですか?または手動で検証する必要がありますか?次のように手動でジャンゴを使用して検証を行う必要があります

+0

プレーンなCharFieldの場合はどうして失敗するのですか? –

+0

あなたの意見に同意します。しかし、私が開発しているアプリケーションでは期待される動作ではありません。 – zer0c00l

答えて

7

clean_fieldname方法を構成:あなたが上向きにDjangoの1.2以上を使用している場合は

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 

は、custom validatorsは努力の価値があるだろう。