Der MinValueValidator und MaxValueValidator sind für ganze Zahlen, also sind sie hier die falschen Prüfer. Verwenden Sie stattdessen die Validatoren speziell für Bereiche:RangeMinValueValidator und RangeMaxValueValidator .
Beide Validatoren befinden sich im Modul django.contrib.postgres.validators .
Hier ist ein Link zum Validator-Quellcode.
Auch ein IntegerRangeField wird in Python als psycopg2.extras.NumericRange dargestellt Objekt, also versuchen Sie es anstelle eines Strings zu verwenden, wenn Sie Ihren default angeben Parameter im Modell.
Hinweis:Der NumericRange Das Objekt enthält standardmäßig die Untergrenze und die Obergrenze nicht, sodass NumericRange(0, 100) 0 und nicht 100 enthalten würde. Wahrscheinlich möchten Sie NumericRange(1, 101). Sie können auch eine bounds angeben Parameter in Ihrem NumericRange widersprechen, die Standardeinstellungen für Einschluss/Ausschluss zu ändern, anstatt die Zahlenwerte zu ändern. Siehe die NumericRange-Objektdokumentation
.
Beispiel:
# 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)
]
)