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,
который проверяет десятичные значения на соответствие формату