2012-05-02 24 views
0

ユーザーがモデルのCharFieldの最大長を超えるテキストを入力したときに表示されるエラーメッセージをカスタマイズしようとしています。Django - CharField TextInputのmax_lengthエラーメッセージを変更する

name = models.CharField(max_length=200) 

私は次のようにフォームフィールドを定義し、このモデルのためのModelFormを持っている:次のようにモデルは、フィールドを定義

name = forms.CharField(widget=forms.TextInput(attrs={'class':"span8", 'placeholder':'e.g. How do I setup a wi-fi network? How to sync my iPhone with iCloud?'}), 
          error_messages={'required': 'Please enter a question.', 'max_length': 'Your question is too long.'}) 

これは「必要」のエラーメッセージのために正常に動作しますが、 'max_length'エラーメッセージはここでもDjangoのデフォルトメッセージを使用します。何か間違っているのですか、あるいはこのテキストを他の方法でカスタマイズする必要がありますか?

答えて

3

'max_length'は、'django.core.validators.MaxLengthValidator'によってチェックされ、ハードコードされたエラーメッセージが表示されます。私はそれが作業しているバージョンからわからないんだけど、今あなたがこれを行うことができます

# after the name or ModelForm definition 
name.validators[-1].message = 'Your question is too long.' 
+0

モデルの名前定義の後では機能しましたが、 ModelFormに名前定義の後に置いてみましたが、その時点でname.validatorsは空のリストです。 –

+4

@JamieForrestバリデーターは 'None''max_length'を持たない' form.CharField'にのみ適用されました。ハードコードされた '[-1]'ではなくバリデーターの内部で 'isinstance(validator、MaxLengthValidator)'をチェックすることもできます – okm

0

:あなたはで独自のバージョンのw /それを置き換えることができ

class YouForm(forms.ModelForm): 

    def __init__(self, *args, **kwargs): 
     self.fields['you_field'].error_messages = {'max_length': 'Ensure this value has at most %(limit_value)d character (it has %(show_value)d).'} 
0

あなたは'django.core.validators.MaxLengthValidator'のサブクラスを作成することができます

from django.core.validators import MaxValueValidator 

class MyValidator(MaxValueValidator): 
    message = 'Your question is too long.' 
関連する問題