我正在写一个 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
之前得到清理。
关于python - Django self.cleaned_data Keyerror,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21497497/