django模型选择列表 - 降序输出

时间:2015-03-24 22:10:02

标签: django django-models django-1.7

我昨天问过SO question

我现在必须在models.py中显示选项列表的代码是:

YOB_TYPES = Choices(*(
    ((0, 'select_yob', _(' Select Year of Birth')),
     (2000, 'to_present', _('2000 to Present'))) +
    tuple((i, str(i)) for i in xrange(1990, 2000)) +
    ((1, 'unspecified', _('Prefer not to answer')),))
)
....
year_of_birth_type = models.PositiveIntegerField(choices=YOB_TYPES, default=YOB_TYPES.select_yob, validators=[MinValueValidator(1)])
....

现在显示选择列表,其中出生年份为1990年至1999年(升序),如下所示:

enter image description here

如何更改代码,以便将出生日期显示在1999年至1990年(降序),如下所示:

enter image description here

我已搜索但无法找到与我的问题相关的任何内容 - 反转(.reverse())元组输出 - 也许我正在搜索错误的主题。

1 个答案:

答案 0 :(得分:4)

见这一行:

tuple((i, str(i)) for i in xrange(1990, 2000)) +

如此调整:

tuple((i, str(i)) for i in xrange(1999, 1989, -1) +

第三个参数指定你的"步骤",在这种情况下为-1(反向)。请记住,对于xrange,第二个参数不包含在迭代中,因此请使用1989而不是1990(与之前使用2000而不是1999之前的原因相同)。