form.Form
がユーザー入力値を検証した後、それらをさらに処理するために別の(外部)プロセスに渡します。この外部プロセスは、値にさらにエラーを見つける可能性があります。
これらのエラーを検証済みのフォームに挿入して、通常のフォームエラー表示方法で表示できるようにする方法はありますか(または、より適切な代替方法はありますか)?
1つの提案は、フォーム検証に外部処理を含めることでした。これは、外部プロセスが単なる検証以上のことを行うため、理想的ではありません。
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"
。
Django 1.7+の場合、_form._errors
_に直接アクセスする代わりにform.add_error()
を使用する必要があります。
ドキュメント: https://docs.djangoproject.com/en/stable/ref/forms/api/#Django.forms.Form.add_error