0

私はこれらの組み込みのDjangoフォームを利用していますが、小さな問題が発生しています。

  • クラスAdminPasswordChangeForm
  • クラスAuthenticationForm
  • クラスPasswordChangeForm
  • クラスPasswordResetForm
  • クラスSetPasswordForm
  • クラスUserChangeForm
  • クラスUserCreationForm

たとえば、はUserCreationFormいくつかの検証エラーを生成します。これらのエラーは、などのタグを使用して、{{ form.errors }}またはなどの特定のフィールドに関連するタグを使用して、テンプレートに表示できます{{ form.username.errors }}

これらのエラーメッセージのスタイルをカスタマイズする方法は知っていますが、テキストをカスタマイズするにはどうすればよいですか?のような条件文でエラーが存在するかどうかを簡単に確認し{% if form.password.errors %}、そのブロックに独自のカスタムテキストを配置することができました。しかし、それは私に提起されたエラーの種類を知らないままにします。

たとえば、トリガーされたエラーがaduplicate_usernameかaかを識別できるようにしたいpassword_mismatchので、テンプレートに独自のエラーを書き込むことができます。

どんな助けでもいただければ幸いです!

4

1 に答える 1

2

一般的に言えば、次のように clean メソッドをカスタマイズできます。

class EventDetailsForm(form.ModelForm):
    class Meta:
        model = Event
        fields = ('name',)
        layout = (
                Fieldset('',
                'name',),
                )

    def clean_name(self):
        event_name = self.cleaned_data['name']
        if Event.objects.filter(name=event_name, status='Live').\
                exclude(id=self.instance.id).exists():
            raise forms.ValidationError('This Name is already in use')
        else:
            return event_name

したがって、django のフォームを再利用するには、それをサブクラス化し、追加の検証ロジックを追加して、ビュー関数でそのフォームを呼び出します。

于 2012-06-21T01:48:43.057 に答える