我尝试在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
我怎么能做到这一点?
由于
答案 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]