MinValueValidator
a MaxValueValidator
jsou pro celá čísla, takže se zde používají nesprávné validátory. Místo toho použijte validátory speciálně pro rozsahy:RangeMinValueValidator
a RangeMaxValueValidator
.
Oba tyto validátory žijí v modulu django.contrib.postgres.validators
.
Zde je odkaz do zdrojového kódu validátoru.
Také IntegerRangeField
je v Pythonu reprezentován jako psycopg2.extras.NumericRange
objekt, takže jej zkuste použít místo řetězce, když zadáváte default
parametr v modelu.
Poznámka:NumericRange
objekt ve výchozím nastavení zahrnuje dolní hranici a nezahrnuje horní hranici, takže NumericRange(0, 100) by zahrnovalo 0 a nezahrnovalo 100. Pravděpodobně chcete NumericRange(1, 101). Můžete také zadat bounds
parametr ve vašem NumericRange
objekt změnit výchozí hodnoty pro zahrnutí/vyloučení namísto změny číselných hodnot. Viz dokumentaci objektu NumericRange
.
Příklad:
# 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)
]
)