2

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 によってスローされたエラー メッセージです。問題がパスワード フィールドにあるのか、電子メール フィールドにあるのか、どうすればわかりますか? そして、そのエラーメッセージを解析することは道ではないと思います。

4

1 に答える 1

3

次のようにフィールド レベルのエラーを追加できます。

self._errors["<field_name>"] = self.error_class([msg])

ValidationErrorinを発生させるcleanと、フィールド以外のエラーが発生します。ドキュメントページの一番下のスニペットを参照してください。

于 2013-05-17T13:09:13.663 に答える