O
MinValueValidator e MaxValueValidator são para números inteiros, então eles são os validadores incorretos para usar aqui. Em vez disso, use os validadores especificamente para intervalos:RangeMinValueValidator e RangeMaxValueValidator . Ambos os validadores vivem no módulo
django.contrib.postgres.validators . Aqui está um link ao código-fonte do validador.
Além disso, um
IntegerRangeField é representado em Python como um psycopg2.extras.NumericRange objeto, então tente usar isso em vez de uma string quando você especificar seu default parâmetro no modelo. Observação:o
NumericRange por padrão, o objeto inclui o limite inferior e exclui o limite superior, portanto, NumericRange(0, 100) inclui 0 e não inclui 100. Você provavelmente deseja NumericRange(1, 101). Você também pode especificar um bounds parâmetro em seu NumericRange objeto para alterar os padrões de inclusão/exclusão, em vez de alterar os valores numéricos. Consulte a a documentação do objeto NumericRange
. Exemplo:
# 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)
]
)