0

モデルのCharFieldの最大長より長いテキストをユーザーが入力したときに表示されるエラーメッセージをカスタマイズしようとしています。モデルはフィールドを次のように定義します。

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.'})

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

4

3 に答える 3

3

は、'max_length'によってチェックされ'django.core.validators.MaxLengthValidator'ます。これには、ハードコードされたエラーメッセージがあります。あなたはそれをあなた自身のバージョンで置き換えることができます:

# after the name or ModelForm definition
name.validators[-1].message = 'Your question is too long.'
于 2012-05-02T16:26:32.723 に答える
3

どのバージョンから機能しているかはわかりませんが、次のように実行できます。

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).'}
于 2016-06-18T15:25:38.607 に答える
0

のサブクラスを作成できます'django.core.validators.MaxLengthValidator'

from django.core.validators import MaxValueValidator

class MyValidator(MaxValueValidator):
    message = 'Your question is too long.'
于 2016-07-16T20:33:59.443 に答える