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

时间:2016-03-04 13:03:07

标签: django postgresql

我正在尝试创建一个模型,其中一个字段应该是Age字段,但这不是一个简单的数字(IntegerField),我需要选择几个可用的年龄范围{ {1}}。我正在查看Choices的文档,但我甚至不确定我可以直接使用(5-8, 8-12, 12-18, 18-99, 5-99),所以我最终得到了类似的东西:

IntegerRangeField

这是正确的方法吗?这对我来说有点尴尬,我正在考虑使用Char代替,虽然我想在最后坚持在这个领域有一个范围......

谢谢!

1 个答案:

答案 0 :(得分:3)

来自django中Range Fields的文档:

  

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

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

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