MinValueValidator
и MaxValueValidator
са за цели числа, така че те са неправилните валидатори, които да използвате тук. Вместо това използвайте валидаторите специално за диапазони:RangeMinValueValidator
и RangeMaxValueValidator
.
И двата валидатора живеят в модула django.contrib.postgres.validators
.
Ето връзка към изходния код на валидатора.
Освен това IntegerRangeField
е представен в Python като psycopg2.extras.NumericRange
обект, така че опитайте да използвате това вместо низ, когато указвате вашия default
параметър в модела.
Забележка:NumericRange
обектът по подразбиране включва долната граница и изключва горната граница, така че NumericRange(0, 100) ще включва 0, а не 100. Вероятно искате NumericRange(1, 101). Можете също да посочите bounds
параметър във вашия NumericRange
обект за промяна на настройките по подразбиране за включване/изключване, вместо промяна на числовите стойности. Вижте документацията на обекта NumericRange
.
Пример:
# models.py file
from django.contrib.postgres.validators import RangeMinValueValidator, RangeMaxValueValidator
from psycopg2.extras import NumericRange
class SomeModel(models.Model):
age_range = IntegerRangeField(
default=NumericRange(1, 101),
blank=True,
validators=[
RangeMinValueValidator(1),
RangeMaxValueValidator(100)
]
)