Django self.cleaned_data键盘错误
问题内容:
我正在写一个Django网站,并且正在写自己的表单验证:
class CreateJobOpportunityForm(forms.Form):
subject = forms.CharField(max_length=30)
start_date = forms.DateField(widget=SelectDateWidget)
end_date = forms.DateField(widget=SelectDateWidget)
def clean_start_date(self):
start_date = self.cleaned_data['start_date']
end_date = self.cleaned_data['end_date']
if start_date > end_date :
raise forms.ValidationError("Start date should be before end date.")
return start_date
但是当start_date小于end_date时,它说:
KeyError at /create_job_opportunity
'end_date'
为什么不能识别'end_date'
钥匙?
问题答案:
由于一个字段取决于另一字段,因此最好clean
使用表格的方法而不是单个clean_field
方法进行清洗。
def clean(self):
cleaned_data = super(CreateJobOpportunityForm, self).clean()
end_date = cleaned_data['end_date']
start_date = cleaned_data['start_date']
# do your cleaning here
return cleaned_data
否则,您必须确保end_date
在清理场地之前start_date
。