2011-09-08 21 views
5

Tôi có một trường start_date và end_date trong mô hình của mình, tôi muốn gán lỗi để end_date khi nó lớn hơn start_date, tôi đã tìm kiếm tài liệu nhưng không tìm thấy một ví dụ về điều đó.Xác thực end_date lớn hơn start_date ở dạng Django Model

+0

Closed .... này trả lời câu hỏi của tôi ... http://stackoverflow.com/questions/2117048/django-overriding-the-clean-method-in-forms-question-about- lỗi nâng cao – juanefren

Trả lời

5

Bạn cần một chức năng tùy chỉnh sạch trong hình thức của bạn mà không được kiểm tra:

def clean(self): 
    start_date = cleaned_data.get("start_date") 
    end_date = cleaned_data.get("end_date") 
    if end_date < start_date: 
     msg = u"End date should be greater than start date." 
     self._errors["end_date"] = self.error_class([msg]) 
0

Đây là đề nghị ví dụ thực tế từ docs

Nói tóm lại, hãy nhớ quay trở lại cleaned_data, và nâng cao lỗi hình thức đúng.

from django import forms 

class ContactForm(forms.Form): 
    # Everything as before. 
    ... 

    def clean_recipients(self): 
     data = self.cleaned_data['recipients'] 
     if "[email protected]" not in data: 
      raise forms.ValidationError("You have forgotten about Fred!") 

    # Always return the cleaned data, whether you have changed it or 
    # not. 
    return data 
Các vấn đề liên quan