PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Django IntegerRangeField-Validierung fehlgeschlagen

Der MinValueValidator und MaxValueValidator sind für ganze Zahlen, also sind sie hier die falschen Prüfer. Verwenden Sie stattdessen die Validatoren speziell für Bereiche:RangeMinValueValidator und RangeMaxValueValidator .

Beide Validatoren befinden sich im Modul django.contrib.postgres.validators .

Hier ist ein Link zum Validator-Quellcode.

Auch ein IntegerRangeField wird in Python als psycopg2.extras.NumericRange dargestellt Objekt, also versuchen Sie es anstelle eines Strings zu verwenden, wenn Sie Ihren default angeben Parameter im Modell.

Hinweis:Der NumericRange Das Objekt enthält standardmäßig die Untergrenze und die Obergrenze nicht, sodass NumericRange(0, 100) 0 und nicht 100 enthalten würde. Wahrscheinlich möchten Sie NumericRange(1, 101). Sie können auch eine bounds angeben Parameter in Ihrem NumericRange widersprechen, die Standardeinstellungen für Einschluss/Ausschluss zu ändern, anstatt die Zahlenwerte zu ändern. Siehe die NumericRange-Objektdokumentation .

Beispiel:

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