Выбор полей модели Django - не лучше ли диктовать?

Учитывая поле;

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]

Есть ли способ лучше? Почему обычно используется кортеж кортежей?

12
задан Jake 15 January 2011 в 09:56
поделиться