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)
]
)