2009-10-28 39 views
5

Làm thế nào để tạo tất cả các biểu mẫu trong bộ định dạng django được yêu cầu? Tôi đã cố gắng xác thực sự hiện diện của tất cả các trường trong phương thức clean() của phương thức ghi đè nhưng nó không hoạt động mà không có bất kỳ lỗi nào được hiển thị.Các biểu mẫu Django yêu cầu

Cảm ơn!

Source code:

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) 

Có mỗi 7 biểu mẫu cho một ngày và tất cả trong số họ phải được điền mới có giá trị. Ví dụ ở trên tôi chỉ cố gắng để nâng cao lỗi trong sạch. is_valid() đã trở thành Sai, nhưng không có lỗi nào được hiển thị.

+0

Bạn có thể xin vui lòng cho biết thêm chi tiết và mã nguồn? – luc

Trả lời

0

Hơi khó hiểu trong đó lỗi không được hiển thị.

Nếu is_valid là False, thì tốt, xác thực mà bản thân nó đang hoạt động. Sau đó, nơi tiếp theo để tìm cho lớp templating. Bạn kiểm tra lỗi như thế nào? {{form.errors}} hoặc {{somefield.errors}}.

Cách thức thiết lập phương pháp làm sạch ở đây, lỗi của chúng sẽ không được liên kết với bất kỳ trường nào, nhưng phải đi vào trong các khe xóa tất cả.

Chúc mừng

+0

formset.errors rỗng khi formset.is_valid() là sai. Trông giống như một lỗi cho tôi. –

0

Tôi đã gặp vấn đề này và tìm ra nơi các lỗi này được lưu trữ bằng cách kiểm tra nguồn. Khi bạn ghi đè lên phương pháp sạch của một bộ định dạng và tăng lỗi xác thực, các lỗi được lưu trữ trong thuộc tính non_form_errors.

Vì vậy, trong mẫu của bạn, bạn sẽ cần phải thêm sau đây giả định mẫu biến cho formset được đặt tên là 'formset':

{{ formset.non_form_errors }} 
Các vấn đề liên quan