我正在利用这些内置的Django表单,我遇到了一个小问题。
例如,UserCreationForm
会生成多个验证错误,我可以使用{{ form.errors }}
等标记在我的模板中显示,甚至可以使用与{{ form.username.errors }}
等特定字段相关的标记。< / p>
我知道如何自定义这些错误消息的样式,但是如何自定义文本?我能够简单地检查条件语句(例如{% if form.password.errors %}
)是否存在错误,并将自己的自定义文本放在该块中。但是,这让我对所引发的错误类型视而不见。
例如,我希望能够确定触发的错误是duplicate_username
还是password_mismatch
,以便我可以在模板中编写自己的错误。
任何帮助将不胜感激!
答案 0 :(得分:2)
一般来说,您可以自定义下面的清洁方法:
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的表单,只需将其子类化,添加其他验证逻辑并在视图函数中调用该表单。