2014-07-05 30 views
0

我想覆蓋默認的驗證錯誤。我的自定義消息需要諸如用戶輸入的長度之類的信息 - 就像默認消息一樣。如何覆蓋Django中的默認錯誤

如何在我的郵件中包含像length這樣的變量?

我試過這段代碼:

class MyForm(ModelForm): 
    class Meta: 
     model = MyModel 
     fields = ['myfield'] 
     error_messages = { 
      'myfield': { 
       'required': 'My error', 
       'min_length': _(u'You wrote only %(length)d chars'), 
       'max_length': _(u'You wrote %(length)d chars - too much.'), 
      }, 
     } 

錯誤,我得到:

KeyError at/
u'length' 
+0

您嘗試過沒有命名嗎?我的意思是:'你寫了%d個字符'。 – danielcorreia

+0

'TypeError at/ %d格式:一個數字是必需的,而不是dict' – dev9

+0

嗯.. DecimalField使用['max'](https://github.com/django/django/blob/master/django/forms/ fields.py#L317-L332),FileField使用'max'和'length'。也許'最大'適合你。 – danielcorreia

回答

1

min_length應用於django.core.validators.MinLengthValidator具有默認的消息爲:

message = _('Ensure this value is %(limit_value)s (it is %(show_value)s).') 

,而params爲:

params = {'limit_value': self.limit_value, 'show_value': cleaned} 

因此請嘗試將'length'更改爲'show_value'

+0

太好了。它同時適用於'min'和'max' – dev9