PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Không xác thực được Django IntegerRangeField

MinValueValidatorMaxValueValidator dành cho số nguyên, vì vậy chúng là trình xác thực không chính xác để sử dụng ở đây. Thay vào đó, hãy sử dụng trình xác thực cụ thể cho các phạm vi:RangeMinValueValidatorRangeMaxValueValidator .

Cả hai trình xác thực đó đều nằm trong mô-đun django.contrib.postgres.validators .

Đây là liên kết vào mã nguồn trình xác thực.

Ngoài ra, một IntegerRangeField được biểu diễn bằng Python dưới dạng psycopg2.extras.NumericRange , vì vậy hãy thử sử dụng đối tượng đó thay vì một chuỗi khi bạn chỉ định default của mình tham số trong mô hình.

Lưu ý:NumericRange đối tượng theo mặc định bao gồm giới hạn dưới và không bao gồm giới hạn trên, vì vậy NumericRange (0, 100) sẽ bao gồm 0 và không bao gồm 100. Bạn có thể muốn NumericRange (1, 101). Bạn cũng có thể chỉ định bounds trong NumericRange của bạn đối tượng để thay đổi các giá trị mặc định cho bao gồm / loại trừ, thay cho việc thay đổi các giá trị số. Xem tài liệu về đối tượng NumericRange .

Ví dụ:

# 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. NHÓM hiệu quả THEO một biểu thức CASE trong Amazon Redshift / PostgreSQL

  2. Khóa hàng cơ sở dữ liệu trong nhiều giao dịch

  3. chọn giá trị tối đa và giá trị tối thiểu mỗi x số lượng hàng-postgresql

  4. kiểu do người dùng xác định làm tham số đầu vào trong hàm PostgreSQL

  5. Arval SQLException:FATAL:xin lỗi, quá nhiều khách hàng đã có trong postgres