Django self.cleaned_data Keyerror [英] Django self.cleaned_data Keyerror

查看:546
本文介绍了Django self.cleaned_data Keyerror的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在写一个Django网站,我正在为自己的表单进行验证:

  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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆