2012-04-01 6 views
11

ジャンゴ - 私はきれいなフォーム(フィールド・エラーを設定しようとしている)と私は現在やっている(クリーンを形成する)とフィールドエラー

self._errors['address'] = self._errors.get('address', ErrorList()) 
self._errors['address'].append(_(u'Please specify an address.')) 

は、より良い、可能であれば短い方法がありますこれをする?

+0

使用self.errors代わりに、それは_ERRORSを返し、私は現在、複数のフィールドに関連する特定の物事を検証するため ')('クリーン使用していますプライベート – radtek

答えて

5
  1. 標準的な方法はraise ValidationError(message)です。
  2. フィールド固有の検証をclean_<fieldname>()メソッドclean_addressに移動します。そのようなメソッドで呼び出されたValidationErrorは、特定のフィールドにエラーメッセージを添付します。 clean()から提起されたものは、一般的にモデルに起因する。
+1

となるものではありません - 私はかなり新しいですDjangoとPythonに一般的に使用されていましたが、フィールド固有のエラーのチェック/作成/追加のためのより良い/短期の方法があるかどうかは疑問でした。 – RS7

+0

アイテム#3が追加されました。必要なものが記述されている可能性があります。 djangoの内部で 'clean_fields'を実装しました –

+0

あなたの提案#3を拡張できますか?それは私にとってはうまくいかない。 [ValidationError'クラス](https://code.djangoproject.com/browser/django/trunk/django/core/exceptions.py#L41)はそのようなエラーの辞書を受け入れていますが、['Forms ._clean_form'](https://code.djangoproject.com/browser/django/trunk/django/forms/forms.py#L297)は実際にそれを利用していません。 –

7

おそらくこれが役立ちます。その一般的にはあなたがきれいにオーバーライドして、関数内で次のようにすることができます。

フォーム固有のエラーを発生させたい場合は可能です。

self._errors["field"] = ErrorList([u"Error"]) 

これはあなたができる単純な昇給のような検証エラーがそう

raise forms.ValidationError(_("Error")) 

・ホープ、このことができます以外のフィールドエラーを持っている場合は、エラークラス

を得ることを確認しています。

関連する問題