6

別のフィールドを参照する必要があるシリアライザーでカスタム フィールド レベルの検証を実行しています。

Validation documentationの例を見ると、validate_<fieldname>またはを使用する必要があるかどうかが明確ではありませんvalidateattrs両方とも辞書を持っているように見えるので、from は fromvalidate_<fieldname>と同じように簡単に別のフィールドを参照できますvalidate(ただし、の説明でvalidateは、複数のフィールドにアクセスするために使用する必要があることが示されています)。では、なぜ両方のオプションがあるのでしょうか。私の場合、どのオプションを使用するのが正しいですか?

4

1 に答える 1

17

ValidationErrorインサイドを上げるvalidate_<foo>()とフィールドエラーになります。

{'foo': ['Not a fooish value.']}

ValidationErrorインサイドを上げるvalidate()とノンフィールドエラーになります。

{'non_field_errors': ['Foo and bar are not compatible.']}

では、なぜ両方のオプションがあるのでしょうか。

部分的には上記の理由と、部分的にはシリアライザー API が Django のフォーム API を可能な限りミラーリングしているためです。必要に応じていくつかの違いがありますが、validateスタイルvalidate_<foo>は似ています。

私の場合、どのオプションを使用するのが正しいですか?

どのエラーメッセージがより適切であるかに基づいて、あなたの判断が必要です。

于 2013-08-28T08:51:16.640 に答える