- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个模型,其中一个字段应该是年龄字段,但它不是一个简单的数字 (IntegerField
),而是需要从几个可用的选项中选择年龄范围 (5-8、8-12、12-18、18-99、5-99)
。我正在查看 Choices 的文档,但我什至不确定我是否可以在其中直接使用 IntegerRangeField
,所以我得到了这样的结果:
class Person(models.Model):
FIRST_RANGE = IntegerRangeField(blank=True, validators=[MinValueValidator(5), MaxValueValidator(8)])
SECOND_RANGE = IntegerRangeField(blank=True, validators=[MinValueValidator(8), MaxValueValidator(12)])
THIRD_RANGE = IntegerRangeField(blank=True, validators=[MinValueValidator(12), MaxValueValidator(18)])
FOURTH_RANGE = IntegerRangeField(blank=True, validators=[MinValueValidator(18), MaxValueValidator(99)])
FIFTH_RANGE = IntegerRangeField(blank=True, validators=[MinValueValidator(18), MaxValueValidator(99)])
AGE_CHOICES = (
(FIRST_RANGE, '5-8'),
(SECOND_RANGE, '8-12'),
(THIRD_RANGE, '12-18'),
(FOURTH_RANGE, '18-99'),
(FIFTH_RANGE, '5-99'),
)
age = models.IntegerRangeField(blank=True, choices=AGE_CHOICES)
这是正确的做法吗?这对我来说有点尴尬,我正在考虑只使用 Char,尽管我想在最后坚持在这个字段上有一个范围......
谢谢!
最佳答案
来自 Range Fields
的文档在 Django 中:
All of the range fields translate to
psycopg2 Range objects
in python, but also accept tuples as input if no bounds information is necessary. The default is lower bound included, upper bound excluded.
看来您可以使用元组
来创建选择。
FIRST_RANGE = (5, 8) # here 5 is included and 8 is excluded
# and similarly create the other ranges and then use in AGE_CHOICES
或者,您可以创建 Range
对象。
from psycopg2.extras import Range
FIRST_RANGE = Range(lower=5, upper=8, bounds='[)')
# bounds: one of the literal strings (), [), (], [], representing whether the lower or upper bounds are included
关于django - Django中由几个IntegerRangeField组成的Choice字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35796808/
我正在尝试实现 IntegerRangeField()对于年龄范围字段。不幸的是,文档没有说明如何验证上限和下限。 我从模型中试过这样的: class SomeModel(models.Model):
Django 支持 Postgres 的范围 fields . 在 Postgres 中,我们可以有一个非重叠约束(“排除约束”),如所述 here在第 8.17.10 节。 如何在 Django 中
我正在使用 IntegerRangeField(PostgreSQL 的特定字段)来表示发行钞票的年份。 将对象添加到数据库并使用非空范围(例如 1990-2000)进行过滤时效果很好,但是只有很少的
我正在使用 Django与 PostgreSQL .我有一个带有 IntegerRangeField 的模型. 在模板中使用 {{ field }} 结果是(例如)NumericRange(2, 8,
我有一个非常简单的模型: from django.contrib.postgres.fields import IntegerRangeField from django.db import mode
我是一名优秀的程序员,十分优秀!