如何使 django formset 中的所有表单都成为必需的?我试图验证所有字段的存在cleaned_data
重写 formset 的 clean() 方法,但它只是默默地失败,没有显示任何错误。
Thanks!
源代码:
class BaseScheduleForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(BaseScheduleForm, self).__init__(*args, **kwargs)
self.fields['day'].widget = forms.HiddenInput()
self.fields['user'].widget = forms.HiddenInput()
class Meta:
model = Schedule
def clean_end_time(self):
start_time = self.cleaned_data.get('start_time')
end_time = self.cleaned_data['end_time']
if start_time and end_time:
if end_time <= start_time:
raise forms.ValidationError("End time must be later that start time.")
return end_time
class BaseScheduleFormset(forms.models.BaseModelFormSet):
def __init__(self, *args, **kwargs):
super(BaseScheduleFormset, self).__init__(*args, **kwargs)
for number, weekday in enumerate(WEEKDAYS):
self.forms[number].day_name = weekday[1]
def clean(self):
raise forms.ValidationError('You must specify schedule for the whole week')
ScheduleFormset = forms.models.modelformset_factory(Schedule, extra=7, max_num=7,
form=BaseScheduleForm, formset=BaseScheduleFormset)
一天有7张表格,必须全部填写才有效。在上面的示例中,我只是尝试在 clean 中引发错误。is_valid()
变为False,但没有显示任何错误。
有点难以理解where错误没有被显示。
如果 is_valid 为 False,那么很好,它本身的验证正在工作。那么下一个要寻找的地方是模板层。你如何检查错误? {{form.errors}} 或 {{somefield.errors}}。
此处设置 clean 方法的方式,它们的错误不会与任何字段关联,但应该出现在all错误槽。
Cheers
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)