MinValueValidator
och MaxValueValidator
är för heltal, så de är felaktiga validerare att använda här. Använd istället validatorerna specifikt för intervall:RangeMinValueValidator
och RangeMaxValueValidator
.
Båda dessa validerare finns i modulen django.contrib.postgres.validators
.
Här är en länk till validerarens källkod.
Dessutom ett IntegerRangeField
representeras i Python som en psycopg2.extras.NumericRange
objekt, så försök använda det istället för en sträng när du anger din default
parameter i modellen.
Obs:NumericRange
objekt är som standard inklusive den nedre gränsen och exklusive den övre gränsen, så NumericRange(0, 100) skulle inkludera 0 och inte inkludera 100. Du vill förmodligen ha NumericRange(1, 101). Du kan också ange en bounds
parametern i din NumericRange
objekt för att ändra standardinställningarna för inkludering/exkludering, istället för att ändra siffervärdena. Se dokumentationen för NumericRange-objektet
.
Exempel:
# 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)
]
)