MinValueValidator và MaxValueValidator 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:RangeMinValueValidator và RangeMaxValueValidator .
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)
]
)