2017-02-21 90 views
0

我想更改驗證程序validate_ipv46_address的錯誤消息。Django:更改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的messege,但它並不像validate_ipv46_address(message='')消息的說法。

或者我必須寫我自己的驗證器?但這也行不通。

class my_validate_ipv4_address(validate_ipv46_address): 
    message = 'test' 
+0

子類化將不起作用 - * validate_ipv46_address *是一個函數,而不是類。 – Pearley

回答

0

源快速檢查發現,你需要用這樣的:

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

它所做的是,它會捕獲Django的驗證提出了驗證錯誤,你爲它提供自己的異常信息。請注意,您將忽略驗證器返回的原始消息 - 最好還是利用它來提供有關驗證失敗原因的正確信息。

+0

謝謝。這解決了我的問題。 – ikreb