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
5
A
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
chiusa .... questa risposto alla mia domanda ... http://stackoverflow.com/questions/2117048/django-overriding-the-clean-method-in-forms-question-about- raising-errors – juanefren