De MinValueValidator
en MaxValueValidator
zijn voor gehele getallen, dus ze zijn de verkeerde validators om hier te gebruiken. Gebruik in plaats daarvan de validators specifiek voor bereiken:RangeMinValueValidator
en RangeMaxValueValidator
.
Beide validators leven in de module django.contrib.postgres.validators
.
Hier is een link naar de broncode van de validator.
Ook een IntegerRangeField
wordt in Python weergegeven als een psycopg2.extras.NumericRange
object, dus probeer dat te gebruiken in plaats van een tekenreeks wanneer u uw default
opgeeft parameter in het model.
Opmerking:het NumericRange
object is standaard inclusief de ondergrens en exclusief de bovengrens, dus NumericRange(0, 100) zou 0 bevatten en geen 100. Waarschijnlijk wilt u NumericRange(1, 101). U kunt ook een bounds
specify opgeven parameter in uw NumericRange
object om de standaardinstellingen voor opname/uitsluiting te wijzigen in plaats van de getalwaarden te wijzigen. Zie de documentatie over het NumericRange-object
.
Voorbeeld:
# 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)
]
)