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