MinValueValidator i MaxValueValidator są dla liczb całkowitych, więc są niepoprawnymi walidatorami do użycia tutaj. Zamiast tego użyj walidatorów specjalnie dla zakresów:RangeMinValueValidator i RangeMaxValueValidator .
Oba te walidatory znajdują się w module django.contrib.postgres.validators .
Oto link do kodu źródłowego walidatora.
Ponadto IntegerRangeField jest reprezentowany w Pythonie jako psycopg2.extras.NumericRange obiektu, więc spróbuj użyć tego zamiast ciągu, gdy określasz swój default parametr w modelu.
Uwaga:NumericRange obiekt domyślnie zawiera dolną granicę i wyklucza górną granicę, więc NumericRange(0, 100) zawiera 0, a nie 100. Prawdopodobnie chcesz NumericRange(1, 101). Możesz także określić bounds parametr w twoim NumericRange obiekt do zmiany wartości domyślnych włączenia/wyłączenia, zamiast zmiany wartości liczbowych. Zobacz dokumentację obiektu NumericRange
.
Przykład:
# 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)
]
)