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