【发布时间】:2014-07-17 00:23:31
【问题描述】:
我需要覆盖我的 Django 表单的 clean() 方法来一起测试两个日期字段:一个 begin_date 和一个 end_date(结束日期晚于开始日期,开始日期晚于现在)。
问题是当这两个字段之一为空或无效时,我得到一个异常(KeyError)。我想要一个简单的错误表单,就像我用空字符域得到的一样。
我很确定会在这里找到答案:Django self.cleaned_data Keyerror 但我没有。
代码如下:
class MyForm(forms.Form):
begin_date = forms.DateField()
end_date = forms.DateField()
#...
def clean(self):
cleaned_data = super(MyForm, self).clean()
errors = []
begin_date = cleaned_data['begin_date']
end_date = cleaned_data['end_date']
#...
# Test 1
if begin_date < date.today():
errors.append(forms.ValidationError(
"La date de début doit être postérieure à la date actuelle"))
# Test 2
if end_date < begin_date:
errors.append(forms.ValidationError(
"La date de fin doit être posétieure à la date de début"))
if errors:
raise forms.ValidationError(errors)
return cleaned_data
【问题讨论】:
-
你的
cleaned_data = super(DealForm, self).clean()好吗?因为类的名称是MyForm而不是DealForm -
是的,抱歉,我已经更改了 SO 中的代码以使其变得简单(编辑确定)