Django:更改 validate_ipv46_address 的错误消息

Django: Change the error message for validate_ipv46_address

我想更改验证器的错误信息validate_ipv46_address

这是我的代码 forms.py:

class IPAddressForm(forms.ModelForm):
    ip_address = forms.CharField(validators=[validate_ipv46_address])

    class Meta:
        # ...

    def __init__(self, *args, **kwargs):
         super(IPAddressForm, self).__init__(*args, **kwargs)


    def clean_ip_address(self):
         # i check other stuff

我想更改 validate_ipv46_address 的消息,但它没有像 validate_ipv46_address(message='').

这样的消息参数

或者我是否必须编写自己的验证器?但这也行不通。

class my_validate_ipv4_address(validate_ipv46_address):
    message = 'test'

快速查看源代码表明您需要像这样包装它:

def my_validate_ipv46_address(value):
    try:
        validate_ipv46_address(value)
    except ValidationError:
        raise ValidationError(_('your message here'), code='invalid')

它的作用是捕获 Django 验证程序引发的验证错误,然后您向它提供您自己的异常消息。请注意,您会忽略从验证器返回的原始消息 - 最好仍然使用它来提供有关验证失败原因的正确信息。