首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django中由几个IntegerRangeField组成的选择字段

Django中由几个IntegerRangeField组成的选择字段
EN

Stack Overflow用户
提问于 2016-03-04 13:03:06
回答 1查看 318关注 0票数 2

我正在尝试创建一个模型,其中一个字段应该是Age字段,但我需要选择几个可用的年龄范围(5-8, 8-12, 12-18, 18-99, 5-99),而不是简单的数字((5-8, 8-12, 12-18, 18-99, 5-99))。我正在查看Choice的文档,但我甚至不确定我是否可以在其中直接使用IntegerRangeField,因此我最终得到了这样的结果:

代码语言:javascript
运行
复制
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代替,虽然我想坚持在这个领域的最后有一个范围.

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-04 13:10:36

来自Range Fields在django中的文档:

所有范围字段都在python中转换为psycopg2 Range objects,但如果不需要边界信息,也可以接受元组作为输入。默认值包括下限,上限不包括在内。

您似乎可以使用tuples来创建选择。

代码语言:javascript
运行
复制
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对象。

代码语言:javascript
运行
复制
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
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35796808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档