【发布时间】:2015-04-05 17:46:11
【问题描述】:
我正在尝试为年龄范围字段实现IntegerRangeField()。不幸的是,文档没有说明如何验证上限和下限。
我从模型中尝试过这样的:
class SomeModel(models.Model):
age_range = IntegerRangeField(default='(0,100)', blank=True, validators=[MinValueValidator(1), MaxValueValidator(100)])
问题是,无论你在字段中输入什么,Django 都会抛出一个 ValidationError:
该值必须小于或等于 100
此外,如果我在该字段中没有输入任何内容,则它不会输入默认范围,并且会失败,并抱怨 IntegrityError。
所以,我尝试从表单对象执行此操作:
class SomeForm(forms.ModelForm):
age_range = IntegerRangeField(validators=[MinValueValidator(1), MaxValueValidator(100)])
但这根本没有任何作用。我在字段中输入的任何数字都会保存。我做错了什么?
【问题讨论】:
-
试试这个并告诉我会发生什么:
age_range = IntegerRangeField(lower=1, upper=100, bounds="[]")我从这里的 psycopg2 文档中得到它initd.org/psycopg/docs/extras.html#psycopg2.extras.NumericRange -
django IntegerRangeField 文档提到它继承自 psycopg2 中的 NumericRange 字段,不要忘记这些是 PostgreSQL 特定字段,请确保您使用的是 PostgreSQL 数据库。
-
@HassenPy 这实际上是我在模型中尝试的第一件事。没用。 Django 甚至不会迁移,说它们是意想不到的关键字。
-
就我个人而言,我不会使用一个记录不充分的功能,它实际上缺乏有关如何实现的资源,请尝试创建自己的自定义字段,这可能会让您感兴趣 stackoverflow.com/questions/849142/…
标签: python django postgresql