1. ホーム
  2. django

[解決済み] すでに検証済みのフォームにエラーを注入する?

2022-10-22 09:03:26

質問

私の 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" .