【发布时间】:2019-03-06 13:22:57
【问题描述】:
我有一些带有两个 urlfields 的表单,两者都不是必需的。该表单用于从这两个 urlfields 中设置模型中 JSONField 的值(为了用户方便),一切正常。如果用户在 url1 或 url2 中输入了除 URL 之外的内容,django 会在“输入有效 URL”的表单中显示验证错误。
现在我想让用户在这些 urlfields 中的任何一个中输入 URL。我为此重写了 clean 方法:
class MyForm(forms.ModelForm):
url1 = forms.URLField(required=False)
url2 = forms.URLField(required=False)
def clean(self):
cleaned_data = super(MyForm, self).clean()
if not cleaned_data['url1'] and not cleaned_data['url2']:
raise ValidationError(
_("You should enter at least one URL"),
code='no_urls'
)
return cleaned_data
它可以工作,但是有一个问题:如果用户在 url1 或 url2 中输入一些“非 URL”数据并提交表单,Django 会引发 KeyError 异常值:'url1'(或 'url2')而不是显示表单验证错误
怎么了?谢谢!
【问题讨论】:
标签: django django-forms