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