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)
]
)