MinValueValidator
Валидатор MinValueValidator применяется к полям форм
для проверки, что введённое значение не меньше определённого
минимального порога. Он особенно полезен для числовых полей,
таких как возраст, цена, количество или рейтинг. Валидатор
выбрасывает исключение ValidationError, если значение
оказывается меньше допустимого минимума.
Валидатор принимает обязательный аргумент limit_value -
минимально допустимое значение, и опциональный аргумент
message для кастомизации сообщения об ошибке.
Также можно передать параметр code, чтобы задать
уникальный код ошибки.
Синтаксис
from django.core.validators import MinValueValidator
MinValueValidator(limit_value, message=None, code=None)
Пример
Рассмотрим простую форму для регистрации пользователя, где возраст должен быть не меньше 18 лет:
from django import forms
from django.core.validators import MinValueValidator
class RegistrationForm(forms.Form):
username = forms.CharField(max_length=50)
age = forms.IntegerField(
validators=[MinValueValidator(18, message="Age must be at least 18")]
)
Теперь при попытке отправить форму с возрастом 16 лет будет выведено сообщение об ошибке:
"Age must be at least 18"
Пример
Используем валидатор в модели через поле IntegerField
с помощью атрибута validators:
from django.db import models
from django.core.validators import MinValueValidator
class Product(models.Model):
name = models.CharField(max_length=100)
price = models.DecimalField(
max_digits=10,
decimal_places=2,
validators=[MinValueValidator(0.01, message="Price must be positive")]
)
rating = models.IntegerField(
validators=[MinValueValidator(1, message="Rating must be at least 1")]
)
Пример
Рассмотрим форму заказа, где количество товара должно быть не меньше 1, а скидка - не меньше 0:
from django import forms
from django.core.validators import MinValueValidator
class OrderForm(forms.Form):
product_name = forms.CharField(max_length=100)
quantity = forms.IntegerField(
validators=[MinValueValidator(1, message="Minimum order quantity is 1")]
)
discount = forms.FloatField(
validators=[MinValueValidator(0.0, message="Discount cannot be negative")]
)
# Usage example
form = OrderForm({
'product_name': 'Laptop',
'quantity': 0,
'discount': -5
})
if not form.is_valid():
print(form.errors)
Результат выполнения кода:
{
'quantity': ['Minimum order quantity is 1'],
'discount': ['Discount cannot be negative']
}
Пример
Использование валидатора напрямую в коде для проверки значений:
from django.core.validators import MinValueValidator
from django.core.exceptions import ValidationError
validator = MinValueValidator(100, message="Value must be at least 100")
try:
validator(50)
except ValidationError as e:
print(e.message)
Результат выполнения кода:
"Value must be at least 100"
Смотрите также
-
валидатор
MaxValueValidator,
который проверяет, что значение не превышает максимум -
валидатор
MinLengthValidator,
который проверяет минимальную длину строки -
валидатор
DecimalValidator,
который проверяет количество цифр и десятичных знаков -
валидатор
StepValueValidator,
который проверяет, что значение кратно заданному шагу