gpt4 book ai didi

Django 忽略表单字段 required=True

转载 作者:行者123 更新时间:2023-12-04 04:54:55 25 4
gpt4 key购买 nike

我有一个包含两个日期字段的表单,两者都是必需的:

arrival_date = forms.DateField(
required = True,
widget = DateInput(attrs={
"class": "input-small"
}),
)
departure_date = forms.DateField(
required = True,
widget = DateInput(attrs = {
"class": "input-small"
})
)

由于这两个日期都在更大的上下文中涉及一些复杂的验证,因此该表单还有一个 clean()对日期执行一些额外检查的方法:
def clean(self):
cleaned_data = super(NewBookingForm3, self).clean()
arrival_date = cleaned_data["arrival_date"]
departure_date = cleaned_data["departure_date"]
property_object = self.wizard.object.property
try:
validate_booked_dates(arrival_date, departure_date, property_object)
except forms.ValidationError:
del cleaned_data["arrival_date"]
del cleaned_data["departure_date"]
raise
return cleaned_data

现在的问题显然是 clean()方法使 Django 忽略 required=True在字段级别,因为当我提交表单而不输入任何内容时 clean()摇摆不定,但以 KeyError 崩溃如 cleaned_data字典不包含该键(这是可以理解的,因为我没有输入任何内容)。

我希望进行现场级别检查 required=Trueclean() 之前执行然后将标记两个字段都需要某种类型的条目并报告该错误而不运行 clean() .

我错过了什么吗?

最佳答案

在您到达 clean 之前执行字段级别检查.您认为 clean 有什么问题?如果这些字段检查中的任何一个失败,则不会被调用。它总是被称为:否则如何创建任何表单级验证消息?

您需要使用例如 form.cleaned_data.get() 来保护自己免受 KeyError 的影响。 .

关于Django 忽略表单字段 required=True,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16885945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com