2

私はこのようなフォームにいくつかのカスタムエラーメッセージを追加しようとしていました:

class RegistrationForm(forms.ModelForm):

    class Meta:
        model = User  
        fields = ('email',)

    extra_field = forms.CharField(error_messages={
        'required':'Este campo es requerido'
    })     

フォーム()で宣言されたフィールドにカスタムエラーメッセージを追加するのに問題はありませんが、クラス( )を介しextra_fieldてモデルから継承されたフィールドにカスタムエラーメッセージを追加するのに問題があります。Usermetaemail

私が本当に望んでいるのは、このフォームのすべてのエラーメッセージをカスタマイズすることです。また、英語ではなくスペイン語で表示したいと思います。

これまでのところ、モデルUserから継承されたフォームフィールドをカスタマイズする方法についてのドキュメントは見つかりませんでした。エラーメッセージがあるという理由だけで、新しいフォームを作成したくありません。

前もって感謝します!!!

PD:DebianスクイーズボックスでDjango1.4とpython2.6.6を使用しています。

4

3 に答える 3

1

わかりました皆さん、回答ありがとうございます。実際、あなたは私を大いに助けてくれました!!!

私はこのように問題を解決しました:

次のフォームがあるとします。

class RegistrationForm(forms.ModelForm):

  class Meta:
    model = User  
    fields = ('username', 'email')

また、ユーザー名フィールドにカスタム エラー メッセージを追加したいのですが、そのフィールドに既に付属しているすべての検証を失いたくありません。

このメソッドを RegistrationForm クラスに追加しました。

def clean_username(self):
    data = self.cleaned_data

    # My extremely important validation.
    if len(data['username']) == 5:

      self.fields['username'].error_messages["myerror"] = "The important message"
      raise forms.ValidationError(self.fields['username'].error_messages["myerror"])

    return data['username']

このアプローチの利点は、問題のフィールドに既に付属している他の検証チェックを失うことがないことです。

ユーザーがデータベースに既に存在することを検証する必要がないため、これは重要です。

あなたの応答をありがとう、良い一日を!!!

于 2012-04-23T00:57:22.817 に答える
0

settings.pyで内部化をオンにします

USE_I18N = True
LANGUAGE_CODE = 'es'

モデルUserは他と変わりません。問題を理解するためにコードを入力してください。メタクラスfields = ('email')では、タプルまたはリストでなければなりません。つまりfields = ('email', )

于 2012-04-21T17:54:07.817 に答える
0

追加のフィールドを定義したのとまったく同じ方法でそれらを再定義するだけで、継承されたフィールドをオーバーライドできます。

于 2012-04-21T19:08:17.753 に答える