PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Неуспешна проверка на Django IntegerRangeField

MinValueValidator и MaxValueValidator са за цели числа, така че те са неправилните валидатори, които да използвате тук. Вместо това използвайте валидаторите специално за диапазони:RangeMinValueValidator и RangeMaxValueValidator .

И двата валидатора живеят в модула django.contrib.postgres.validators .

Ето връзка към изходния код на валидатора.

Освен това IntegerRangeField е представен в Python като psycopg2.extras.NumericRange обект, така че опитайте да използвате това вместо низ, когато указвате вашия default параметър в модела.

Забележка:NumericRange обектът по подразбиране включва долната граница и изключва горната граница, така че NumericRange(0, 100) ще включва 0, а не 100. Вероятно искате NumericRange(1, 101). Можете също да посочите bounds параметър във вашия NumericRange обект за промяна на настройките по подразбиране за включване/изключване, вместо промяна на числовите стойности. Вижте документацията на обекта NumericRange .

Пример:

# 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да изберете записи от последните 24 часа в PostgreSQL

  2. разлика между localhost и postgres за хост в docker

  3. Използване на двуфазови ангажименти на postgres

  4. Попълнете таблицата с данни за липсваща дата (postgresql, червено отместване)

  5. Как да добавя 2 точки с разстояние между тях (SRID =32636)?