ユーザー入力値を検証した後、form.Form
さらに処理するためにそれらを別の (外部) プロセスに渡します。この外部プロセスは、値のさらなるエラーを検出する可能性があります。
これらのエラーを既に検証されたフォームに挿入して、通常のフォームエラー表示方法で表示できるようにする方法はありますか (または、より良い代替アプローチがあります)。
1 つの提案は、フォーム検証に外部処理を含めることでした。これは、外部プロセスが単なる検証以上のことを行うため、理想的ではありません。
ユーザー入力値を検証した後、form.Form
さらに処理するためにそれらを別の (外部) プロセスに渡します。この外部プロセスは、値のさらなるエラーを検出する可能性があります。
これらのエラーを既に検証されたフォームに挿入して、通常のフォームエラー表示方法で表示できるようにする方法はありますか (または、より良い代替アプローチがあります)。
1 つの提案は、フォーム検証に外部処理を含めることでした。これは、外部プロセスが単なる検証以上のことを行うため、理想的ではありません。
Django 1.7 以降では、直接form.add_error()
アクセスする代わりに使用する必要がありますform._errors
。
ドキュメント: https://docs.djangoproject.com/en/stable/ref/forms/api/#django.forms.Form.add_error
Form._errors
標準的な辞書のように扱うことができます。ErrorList
クラスを使用し、既存のリストにエラーを追加するのは良い形式と考えられています。
from django.forms.utils import ErrorList
errors = form._errors.setdefault("myfield", ErrorList())
errors.append(u"My error here")
また、フィールド以外のエラーを追加する場合は、の代わりにdjango.forms.forms.NON_FIELD_ERRORS
(デフォルトで) を使用します。"__all__"
"myfield"
_errors
フォームの属性にエラーの詳細を直接追加できます。
https://docs.djangoproject.com/en/1.5/ref/forms/validation/#completed-later https://docs.djangoproject.com/en/1.6/ref/forms/validation/#modifying-field-errors
特定のフィールドにエラーを追加:
form.add_error('fieldName', 'error description')
**非フィールドにエラーを追加**
form.add_error(None, 'error description')
#Only pass None instead of field name