我昨天问过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年(升序),如下所示:
如何更改代码,以便将出生日期显示在1999年至1990年(降序),如下所示:
我已搜索但无法找到与我的问题相关的任何内容 - 反转(.reverse())元组输出 - 也许我正在搜索错误的主题。
答案 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之前的原因相同)。