Вы рассмотрели переопределение функции clean() вашей формы?
В качестве примера, Heres то, что я сделал в прошлом:
class ChemLabTimeSelect(forms.Form):
from_date = forms.DateTimeField(
widget=DateTimePicker(options={"format": "YYYY-MM-DD HH:mm:ss",
"pickTime": True}))
to_date = forms.DateTimeField(
widget=DateTimePicker(options={"format": "YYYY-MM-DD HH:mm:ss",
"pickTime": True}))
def clean(self):
cleaned_data = self.cleaned_data
if cleaned_data.has_key('from_date') and cleaned_data.has_key('to_date'):
total_days = (cleaned_data['to_date'] - cleaned_data['from_date']).days
negative_days = (cleaned_data['from_date'] - cleaned_data['to_date']).total_seconds()
if negative_days > 0:
raise ValidationError({'from_date':["The from date is greater than the to date!",]})
elif total_days > 7:
raise ValidationError(["The amount of time selected is %s days which is too large!" % total_days,])
return cleaned_data
Также модель имеет чистую() функцию переопределения и должны быть в состоянии достичь желаемого результата. но следует помнить о различиях между чистым переопределением формы и модели.
Да, но я не использую формы django, а скорее использую валидации для информирования углового клиента – user2954587