Il MinValueValidator e MaxValueValidator sono per numeri interi, quindi sono i validatori errati da usare qui. Usa invece i validatori specificamente per gli intervalli:RangeMinValueValidator e RangeMaxValueValidator .
Entrambi questi validatori risiedono nel modulo django.contrib.postgres.validators .
Ecco un link al codice sorgente del validatore.
Inoltre, un IntegerRangeField è rappresentato in Python come un psycopg2.extras.NumericRange oggetto, quindi prova a usarlo invece di una stringa quando specifichi il tuo default parametro nel modello.
Nota:il NumericRange l'oggetto per impostazione predefinita include il limite inferiore ed esclude il limite superiore, quindi NumericRange(0, 100) includerebbe 0 e non includerebbe 100. Probabilmente vuoi NumericRange(1, 101). Puoi anche specificare un bounds parametro nel tuo NumericRange oggetto di modificare i valori predefiniti per l'inclusione/esclusione, invece di modificare i valori numerici. Vedi la documentazione dell'oggetto NumericRange
.
Esempio:
# 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)
]
)