sql >> Databáze >  >> RDS >> PostgreSQL

Ověření Django IntegerRangeField se nezdařilo

MinValueValidator a MaxValueValidator jsou pro celá čísla, takže se zde používají nesprávné validátory. Místo toho použijte validátory speciálně pro rozsahy:RangeMinValueValidator a RangeMaxValueValidator .

Oba tyto validátory žijí v modulu django.contrib.postgres.validators .

Zde je odkaz do zdrojového kódu validátoru.

Také IntegerRangeField je v Pythonu reprezentován jako psycopg2.extras.NumericRange objekt, takže jej zkuste použít místo řetězce, když zadáváte default parametr v modelu.

Poznámka:NumericRange objekt ve výchozím nastavení zahrnuje dolní hranici a nezahrnuje horní hranici, takže NumericRange(0, 100) by zahrnovalo 0 a nezahrnovalo 100. Pravděpodobně chcete NumericRange(1, 101). Můžete také zadat bounds parametr ve vašem NumericRange objekt změnit výchozí hodnoty pro zahrnutí/vyloučení namísto změny číselných hodnot. Viz dokumentaci objektu NumericRange .

Příklad:

# 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. Ukládání GUID/UUID MySQL

  2. SQL - Levé spojení 2 cizích klíčů s 1 primárním klíčem

  3. SQL server při aktualizaci nastavil aktuální časové razítko

  4. zobrazit všechna data pro duplicitní řádky v oracle