Django Documentationでは、相互に依存するフィールドを検証するための推奨される方法は、フォームのclean()
メソッドにあります。それは理にかなっていますが、私が扱っている問題は、どのフィールドが問題を引き起こしているかをビューに通知する方法です。
失敗しているフィールドが 1 つだけの場合は、次のように確認できます。
for field in form:
if field.errors:
# I know exactly in what field is the problem
しかし、エラーがclean()
メソッドから発生した場合、私が得たのはエラーメッセージだけです:
if form.errors:
for error in form.errors:
# I know there's a problem, and I got an error message,
# but I don't know what are the fields that cause it.
タイプミスを避けるために、メールアドレスを 2 回、パスワードを 2 回入力する必要がある典型的な登録フォームを考えてみてください。たとえば、2 つのパスワード フィールドの値が異なる場合にそれらの CSS クラスを変更したいのですが、ビューでは、問題の原因となっているウィジェットへの参照がありません。私が持っている唯一の情報は、フォームのclean()
メソッドで ValidationError によってスローされたエラー メッセージです。問題がパスワード フィールドにあるのか、電子メール フィールドにあるのか、どうすればわかりますか? そして、そのエラーメッセージを解析することは道ではないと思います。