sql >> Database >  >> RDS >> PostgreSQL

Django IntegerRangeField Validatie mislukt

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



  1. PostgreSQL:Waarom kan psql geen verbinding maken met de server?

  2. SQLite hernoemt PRINTF() naar FORMAT()

  3. Oracle UDT's Custom type mapping voor is niet gespecificeerd of is ongeldig

  4. ProxySQL 2.0 uitvoeren en configureren voor MySQL Galera Cluster op Docker