Le MinValueValidator
et MaxValueValidator
sont pour les entiers, ce sont donc les validateurs incorrects à utiliser ici. Utilisez plutôt les validateurs spécifiquement pour les plages :RangeMinValueValidator
et RangeMaxValueValidator
.
Ces deux validateurs résident dans le module django.contrib.postgres.validators
.
Voici un lien au code source du validateur.
En outre, un IntegerRangeField
est représenté en Python par un psycopg2.extras.NumericRange
objet, essayez donc de l'utiliser au lieu d'une chaîne lorsque vous spécifiez votre default
paramètre dans le modèle.
Remarque :La NumericRange
L'objet par défaut inclut la limite inférieure et exclut la limite supérieure, donc NumericRange(0, 100) inclura 0 et n'inclura pas 100. Vous voulez probablement NumericRange(1, 101). Vous pouvez également spécifier un bounds
paramètre dans votre NumericRange
objet pour modifier les valeurs par défaut pour l'inclusion/exclusion, au lieu de modifier les valeurs numériques. Voir la documentation de l'objet NumericRange
.
Exemple :
# 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)
]
)