2011-09-08 4 views
5

Ho un campo start_date e end_date nel mio modello, voglio assegnare un errore a end_date quando è più grande di start_date, ho cercato documenti, ma non lo trovo un esempio a riguardo.Validate end_date è maggiore di start_date in Django Model Form

+0

chiusa .... questa risposto alla mia domanda ... http://stackoverflow.com/questions/2117048/django-overriding-the-clean-method-in-forms-question-about- raising-errors – juanefren

risposta

5

Hai bisogno di una funzione di pulizia personalizzato nel modulo che fa il controllo:

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

Questo è l'esempio reale consigliato dal docs

Insomma, ricordatevi di tornare cleaned_data, e sollevare errori di forma correttamente.

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