2015-03-24 4 views
2

Вчера я спросил об этом SO question.Список выбора моделей django - заказ на выход

код теперь я должен отобразить список выбора в моем 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()) выходной кортеж - может быть, я ищу неправильную тему.

ответ

4

Смотрите эту строку:

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

Adjust, как так:

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

Третий аргумент задает свой "шаг", в этом случае -1 (идти в обратном направлении). Помните, что с xrange второй параметр не включен в итерацию, поэтому используйте 1989, а не 1990 (по той же причине, почему вы использовали 2000 ранее, а не в 1999 году).

+0

Джозеф, спасибо за ваш ответ. Это действительно помогло мне. Я думал, что это будет относительно простое решение - я просто не мог понять это сам. – user1261774

Смежные вопросы