Проблема перечисления Джанго - PullRequest
0 голосов
/ 08 июля 2011

Я пытаюсь реализовать структуру перечисления в django так, чтобы

class Status():
PENDING = 0
CONFIRMED = 1
DENIED = 2

STATUS =(
    (PENDING,_("salary_status_pending")),
    (CONFIRMED,_("salary_status_confirmed")),
    (DENIED,_("salary_status_denied")),
)

и в моей модели я использую его как

class MyModel(models.Model):
    status = models.IntegerField(null=False, choices=Status.STATUS)

Работает нормально, и если я хочу получить метку поля enum в своем шаблоне, я использую {{ mymodel.get_status_display }} и в моем поле enum записывается метка _('key..') вместо числа, которое объясняется в документах Django

Однако, что если я захочу получить ярлык в моем view.py? Я хочу написать код ниже, и он должен дать мне метку поля enum вместо числа

Status.CONFIRMED 

Как мне этого добиться?

Спасибо

Ответы [ 2 ]

0 голосов
/ 09 июля 2011

Я нашел это. Код ниже делает то, что я хочу

Status.STATUS [Status.CONFIRMED ][1]
0 голосов
/ 08 июля 2011

Как насчет этого?

class MyModel(models.Model):
    PENDING = 0
    CONFIRMED = 1
    DENIED = 2

    STATUS = {PENDING:_("salary_status_pending"), CONFIRMED:..., DENIED:... }    
    STATUS_CHOICES = [(a,a) for a in STATUS.items()]    
    status = models.IntegerField(null=False, choices=STATUS_CHOICES)

И вы можете получить доступ к своему ярлыку везде, используя MyModel.STATUS[MyModel.CONFIRMED]

...