PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Django IntegerRangeField Validation nie powiodło się

MinValueValidator i MaxValueValidator są dla liczb całkowitych, więc są niepoprawnymi walidatorami do użycia tutaj. Zamiast tego użyj walidatorów specjalnie dla zakresów:RangeMinValueValidator i RangeMaxValueValidator .

Oba te walidatory znajdują się w module django.contrib.postgres.validators .

Oto link do kodu źródłowego walidatora.

Ponadto IntegerRangeField jest reprezentowany w Pythonie jako psycopg2.extras.NumericRange obiektu, więc spróbuj użyć tego zamiast ciągu, gdy określasz swój default parametr w modelu.

Uwaga:NumericRange obiekt domyślnie zawiera dolną granicę i wyklucza górną granicę, więc NumericRange(0, 100) zawiera 0, a nie 100. Prawdopodobnie chcesz NumericRange(1, 101). Możesz także określić bounds parametr w twoim NumericRange obiekt do zmiany wartości domyślnych włączenia/wyłączenia, zamiast zmiany wartości liczbowych. Zobacz dokumentację obiektu NumericRange .

Przykład:

# 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. Usuwanie PostgreSQL z wewnętrznym sprzężeniem

  2. Wybierz N wierszy z wartościami mieszanymi

  3. Konwertowanie daty na format roczny przy użyciu Dbplyr

  4. Jak deserializować wartość BigDecimal otrzymaną od brokera kafka poprzez mechanizm debezium CDC?

  5. Funkcja SUM() w PostgreSQL