Пользовательская валидация формы Django для отображения ошибок на передней панели
Прямо сейчас я устанавливаю фильтр диапазона в моем проекте Django, который выглядит следующим образом.
Что мне нужно сделать, так это предотвратить вышеупомянутое поведение, не только в логике представления, что просто, но мне нужно отобразить сообщение для использования на переднем конце что-то вроде "Low bound number cannot be higher than High bound"
, которое будет выглядеть следующим образом.
Вот мой forms.py
class MultiFilterForm(forms.Form):
review_high = forms.IntegerField(validators = [MinValueValidator(0)],
min_value=0,
label = 'Reviews',
required = False,
widget = forms.NumberInput(
attrs={'id': 'reviewInputHigh',
'name': 'reviewHigh',
'href': '#',
'value': '',
'class': "form-control"}))
review_choice_high =(('lte', 'Reviews <='),)
reviewsign_high = forms.ChoiceField(choices = review_choice_high, label = 'Reviews <=', required = False,
widget = forms.TextInput(attrs={'id': 'reviewSignHigh','class': 'form-control',}))
review_low = forms.IntegerField(validators = [MinValueValidator(0)],
min_value=0,
required = False,
widget = forms.NumberInput(
attrs={'id': 'reviewInputLow',
'name': 'reviewLow',
'href': '#',
'value': '',
'class': "form-control"}))
review_choice_low = (('gte', 'Reviews >='),)
reviewsign_low = forms.ChoiceField(choices = review_choice_low, label = 'Reviews >=', required = False,
widget = forms.Select(attrs={'id': 'reviewSignLow','class': 'form-control',}))
Я думал внедрить функцию в класс Form следующим образом
def validate_bounds(review_high, review_low):
if review_low.value > review_high.value:
raise ValidationError('Low bound number cannot be higher than High bound')
И как-то передать входное значение review_high и review_low в эту функцию, но я не уверен, как получить входное значение пользователя из front end в forms.py. Возможно, эту функцию я бы реализовал в представлении.
Кроме того, приведет ли повышение ValidationError к результату, показанному на изображении 2? Т.е. уведомление для конечного пользователя?
Могу воспользоваться любым советом по этой теме. Спасибо