如何使django formset中的所有表單都被要求?我試圖驗證cleaned_data
覆蓋formset的clean()方法中所有字段的存在,但它只是在沒有任何錯誤顯示的情況下以靜默方式失敗。需要Django formsets
謝謝!
的源代碼:
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點的形式爲一天,所有的人都必須填寫有效。在上面的例子中,我只是試圖提出乾淨的錯誤。 is_valid()
變成了False,但沒有顯示錯誤。
能否請您提供更多的細節和源代碼? – luc 2009-10-28 12:24:48