在Django Rest Framework验证方法中添加字段错误?

Dav*_* D. 2 python django

在Django Rest Framework(和Django)中,传统上我们检查validate_<field>方法中的字段,并在方法中进行更多的全局检查validate.

但是,请查看以下代码段:

def validate(self, data):
    # ....
    try:
        customer.activate(data['signup_code'], data['raw_password'])
    except BadCodeProvided:
        raise ValidationError(MSG_WRONG_ACTIVATION_CODE)
    except SomeOtherException:
        raise ValidationError(SOME_OTHER_MESSAGE)
Run Code Online (Sandbox Code Playgroud)

在这里,我被迫使用validate方法,因为我使用2个字段进行验证(signup_code和raw_password).但是,如果BadCodeProvided Exception中发生错误,我知道它与signup_code字段(而不是raw_password字段)有关,因为此处引发了异常.

在上面的代码段中,thiw将创建一个"non_field_error".问题:DRF中是否存在引发相同错误但与"signup_code"字段相关的方法?(就像它将在一种validate_signup_code方法中完成).

谢谢

小智 9

你可以serializers.ValidationError在序列化器中使用:

raise serializers.ValidationError({"myField": "custom message error 1",
                               "myField2": "custom message error 1"})
Run Code Online (Sandbox Code Playgroud)

doc here Validator DRF