РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
464 of 818 menu

MaxValueValidator

Валидатор MaxValueValidator применяется к полям форм для проверки, что переданное значение не превышает заданное максимальное число. Он принимает обязательный аргумент limit_value - пороговое значение, которое нельзя превышать. Также можно передать необязательный параметр message для кастомизации сообщения об ошибке.

Синтаксис

from django.core.validators import MaxValueValidator MaxValueValidator(limit_value, message=None)

Пример . Использование в форме

Давайте создадим форму для оценки товара, где значение должно быть не больше 5:

from django import forms from django.core.validators import MaxValueValidator class RatingForm(forms.Form): rating = forms.IntegerField( validators=[MaxValueValidator(5)] )

При попытке ввести число больше 5 валидация не пройдёт.

Пример . С кастомным сообщением

Добавим понятное сообщение об ошибке для пользователя:

from django import forms from django.core.validators import MaxValueValidator class AgeForm(forms.Form): age = forms.IntegerField( validators=[ MaxValueValidator( 120, message="Возраст не может превышать 120 лет" ) ] )

Проверка данных формы

Посмотрим, как валидатор работает при проверке отправленных данных:

from django import forms from django.core.validators import MaxValueValidator class ScoreForm(forms.Form): score = forms.IntegerField( validators=[MaxValueValidator(100)] ) # Valid data form = ScoreForm({'score': 85}) if form.is_valid(): print("Form is valid") print(f"Score: {form.cleaned_data['score']}") # Invalid data form = ScoreForm({'score': 150}) if not form.is_valid(): print("Form is invalid") print(f"Errors: {form.errors}")

Результат выполнения кода:

"Form is valid" "Score: 85" "Form is invalid" "Errors: <ul class='errorlist'><li>score<ul class='errorlist'><li>Ensure this value is less than or equal to 100.</li></ul></li></ul>"

Использование с полем DecimalField

Валидатор также работает с десятичными числами, проверяя их максимальное значение:

from django import forms from django.core.validators import MaxValueValidator class PriceForm(forms.Form): price = forms.DecimalField( max_digits=10, decimal_places=2, validators=[MaxValueValidator(9999.99)] ) form = PriceForm({'price': '5000.00'}) if form.is_valid(): print("Valid price") print(f"Price: {form.cleaned_data['price']}")

Результат выполнения кода:

"Valid price" "Price: 5000.00"

Смотрите также

  • валидатор MinValueValidator,
    который проверяет минимальное значение поля
  • валидатор MaxLengthValidator,
    который проверяет максимальную длину строки
  • валидатор MinLengthValidator,
    который проверяет минимальную длину строки
  • валидатор DecimalValidator,
    который проверяет десятичные значения на соответствие формату
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить