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 回答