Учитывая поле;
domain_status_choices = (
(1,'Live')
(2,'Offline')
(3,'Dev')
)
status = models.SmallIntegerField( choices=domain_status_choices )
Я знаю, что могу получить и установить числовое представление и использовать get_status_display()
для получения текстовой метки.Но если пользователь публикует status=Offline
, как я могу получить числовое значение для его сохранения?Я также хотел бы иметь возможность проверить, что числа или текстовые значения находятся в списке.
Для меня имеет больше смысла использовать dict.Вот мой текущий метод:
domain_status_choices = {
1: 'Live',
2: 'Offline',
3: 'Dev',
}
status = models.SmallIntegerField( choices=domain_status_choices.iteritems() )
...
if input1 not in domain_status_choices.keys(): print "invalid"
if input2 not in domain_status_choices.items(): print "invalid"
status = [k for k, v in domain_status_choices.iteritems() if v == input3][0]
Есть ли лучший способ?Почему обычно используется кортеж кортежей?