El MinValueValidator
y MaxValueValidator
son para números enteros, por lo que son los validadores incorrectos para usar aquí. En su lugar, use los validadores específicamente para rangos:RangeMinValueValidator
y RangeMaxValueValidator
.
Ambos validadores viven en el módulo django.contrib.postgres.validators
.
Aquí hay un enlace al código fuente del validador.
Además, un IntegerRangeField
se representa en Python como psycopg2.extras.NumericRange
objeto, así que intente usar eso en lugar de una cadena cuando especifique su default
parámetro en el modelo.
Nota:El NumericRange
El objeto de forma predeterminada incluye el límite inferior y excluye el límite superior, por lo que NumericRange (0, 100) incluiría 0 y no incluiría 100. Probablemente desee NumericRange (1, 101). También puede especificar un bounds
parámetro en su NumericRange
objeto de cambiar los valores predeterminados de inclusión/exclusión, en lugar de cambiar los valores numéricos. Consulte la documentación del objeto NumericRange
.
Ejemplo:
# 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)
]
)