sql >> Databasteknik >  >> RDS >> PostgreSQL

Django IntegerRangeField Validering misslyckas

MinValueValidator och MaxValueValidator är för heltal, så de är felaktiga validerare att använda här. Använd istället validatorerna specifikt för intervall:RangeMinValueValidator och RangeMaxValueValidator .

Båda dessa validerare finns i modulen django.contrib.postgres.validators .

Här är en länk till validerarens källkod.

Dessutom ett IntegerRangeField representeras i Python som en psycopg2.extras.NumericRange objekt, så försök använda det istället för en sträng när du anger din default parameter i modellen.

Obs:NumericRange objekt är som standard inklusive den nedre gränsen och exklusive den övre gränsen, så NumericRange(0, 100) skulle inkludera 0 och inte inkludera 100. Du vill förmodligen ha NumericRange(1, 101). Du kan också ange en bounds parametern i din NumericRange objekt för att ändra standardinställningarna för inkludering/exkludering, istället för att ändra siffervärdena. Se dokumentationen för NumericRange-objektet .

Exempel:

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



  1. Prestandapåverkan av tom LIKE i ett förberett uttalande

  2. SQL-utvecklare för import från Excel

  3. Beställa efter datum (varchar)?

  4. Hur returnerar man rader baserat på databasanvändaren och tabellens innehåll?