python - Django self.cleaned_data Keyerror

标签 python django django-forms

我正在写一个 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/

相关文章:

python - 限制附加到数组的元素数量 - Python

django - Django查询在哪里

python - POST 数据中缺少 Django 表单输入

javascript - 使用 Javascript 将表单动态添加到 Django 表单集

python - matplotlib:处理 ax.set_xlabel/ax.set_ylabel 中的语音标记/引号

python正则表达式捕获出现次数未知的模式

python - 在 Django 中,什么时候应该使用 doctests 而不是单元测试?

python - Django Admin - 自定义内联表单

css - 我如何在 Django 中使用 CSS?

python - 我不确定如何从 HTML 打印我需要的其余信息