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