Django枚举问题

时间:2011-07-08 08:55:33

标签: django django-templates django-views enumeration

我尝试在django中实现enumartion结构,以便

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)

它工作正常,如果我想在我的模板中获取枚举字段的标签,我使用 {{ mymodel.get_status_display }}并将标签_('key..')写入我的枚举字段而不是Django文档中解释的数字

但是,如果我想在view.py中获取标签怎么办? 我想在下面写一个代码,它应该给我enum字段的标签而不是数字

Status.CONFIRMED 

我怎么能做到这一点?

由于

2 个答案:

答案 0 :(得分:0)

这个怎么样?

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]

在任何地方访问您的标签

答案 1 :(得分:0)

我找到了。下面的代码做了我想要的事情

Status.STATUS [Status.CONFIRMED ][1]