私のウェブサイト上で登録しているユーザーが私に固有のアドレス(市、街路、街路番号など)を与えていると、それはユニークではないとき、私はserializers.ValidationError
を上げていた場合、私は検証しています:Django Rest Framework:non_field_errorsというカスタム名を設定するには?
class UserSerializer(serializers.ModelSerializer):
def validate(self, attrs):
city = attrs['city']
street = attrs['street']
street_number = attrs['street_number']
apartment_number = attrs['apartment_number'] if 'apartment_number' in attrs else None
unique = check_address_unique(city, street, street_number, apartment_number)
if not unique:
raise serializers.ValidationError(_('Another user has already been registered under this address.'))
return attrs
問題は、エラーが渡され、その下のフィールド名がこの標準non_field_errors
であるということである。
{"non_field_errors":["Another user has already been registered under this address."]}
私は何とかこのエラーにカスタム名を与えたいのですが、所望の出力は次のようになります。
{"address":["Another user has already been registered under this address."]}
これを実行する方法は?
あなたはこのようにそれを行うことができ、単一のValidationErrorをするために
は、それはそれを行うための正しい方法だとは思わないでください。 「グローバル」検証機能で検証しているので、発生するエラーは特定のフィールドエラーではありません。私はまったく同じことをしていませんが、ある意味では、辞書やエラーのリストに 'self.errors'などのようなエラーを直接追加する方法があると思います(申し訳ありませんが、 )。 – makaveli