Django self.cleaned_data Keyerror [英] Django self.cleaned_data Keyerror
本文介绍了Django self.cleaned_data Keyerror的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
class CreateJobOpportunityForm
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']
如果start_date> end_date:
raise forms.ValidationError(开始日期应在结束日期之前)
return start_date
,但是当start_date小于end_date时,它说:
KeyError at / create_job_opportunity
'end_date'
为什么不识别'end_date' code> key?
解决方案
由于一个字段取决于另一个字段,最好是在 clean
方法,而不是单独的 clean_field
方法。
$ clean $($)
clean_data = super(CreateJobOpportunityForm,self).clean()
end_date = clean_data ['end_date']
start_date = clean_data ['start_date']
#在这里清理
返回clean_data
否则你必须确保你的 end_da te
字段在 start_date
之前被清理。
I'm writing a Django website and i'm writing my own validation for a form :
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
but when the start_date is less than end_date it says :
KeyError at /create_job_opportunity
'end_date'
why doesn't it recognize the 'end_date'
key?
解决方案
Since one field depends on another field, it's best if you did your cleaning in the clean
method for the form, instead of the individual clean_field
method.
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
Else you would have to ensure that your end_date
field gets cleaned before start_date
.
这篇关于Django self.cleaned_data Keyerror的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文