2012-02-19 17 views
0

私はDjangoのデフォルトの登録フォームにいくつかのエラーメッセージを変更しようとしています:私は編集エラーメッセージ

「無効」に変更したい例えば

class RegistrationForm(forms.Form): 
    username = forms.RegexField(regex=r'^\w+$',max_length=30,widget=forms.TextInput(attrs=attrs_dict),label=_("Username"),error_messages={'invalid': _("This value must contain only letters,numbers and underscores.")}) 
    email=forms.EmailField(widget=forms.TextInput(attrs=dict(attrs_dict,maxlength=75)),label=_("Email address")) 
    password1 = forms.CharField(widget=forms.PasswordInput(attrs=attrs_dict,render_value=False),label=_("Password")) 
    password2 = forms.CharField(widget=forms.PasswordInput(attrs=attrs_dict,render_value=False),label=_("Password (again)")) 

:_ ( "この値は文字、数字、下線のみでなければなりません")。ユーザー名フィールド のデフォルトフォームを編集するたびに、私は変更なしと表示されます...

また、ユーザにユーザ名フィールドに数字だけを入力するように制限する方法があれば教えてください。

答えて

0

(django 1.3.1の)django.forms.field(423〜439行目)のコードを見てください。

RegexFieldの場合、djangoはerror_messages ['invalid']をキーワード引数error_messageで上書きします(デフォルトはnone)。

:の線に沿って何かを与えるだろう

username = forms.RegexField(regex=r'^\w+$',max_length=30,widget=forms.TextInput(attrs=attrs_dict),label=_("Username"),error_message = _("This value must contain only letters,numbers and underscores.")) 

をユーザ名として数字のみを受け入れるには、私はforms.IntegerFieldを使用することをお勧めします、:

あなたがRegexFieldを維持したい場合は、単にんので、

username = forms.IntegerField(min_value = 0, error_messages={'invalid': _("This value must contain only letters,numbers and underscores.")}) 

IntegerFieldを使用することは私の意見では、これを行う最もクリーンで素敵な方法です。そしてそれはあなたが望むことをします:ユーザ名を数字だけに制限します。

+0

お返事ありがとうございます。カスタムフォームでの編集がフィールドの設定を置き換えることは知りませんでした – user1163236