获取选择字段的值而不是键

时间:2017-11-29 12:52:52

标签: python-2.7 openerp odoo-10

我在一个模型中定义了selection字段。

type = fields.Selection([('a','A'),('b','B'),('c','C')])

在其中一项功能中,我尝试获取string value而不是key

@api.multi
    def testFunc(self):
    for res in self:
        print'Value',res.type //It prints 'a'.

我需要打印A'。

我该怎么做?

3 个答案:

答案 0 :(得分:3)

选择其中一个解决方案:

您可以获得选择列表的最重要的东西,如下所示:

    self._fields['type'].selection

所以试试这个:

    # convert the list to dictionary
    dict(self._fields['type'].selection).get(self.type)

如果您希望以用户语言翻译标签:

  # here the label return is translated.
  value = dict(self.fields['state']._description_selection(self.evn)).get(self.type)

答案 1 :(得分:0)

您可以使用此方法,它返回字符串值,如果是这种情况,则将其转换为

@api.multi
    def testFunc(self):
    for res in self:
        print'Value', dict(res.fields_get(["type"],['selection'])['type']["selection"]).get(res.type)

答案 2 :(得分:0)

一个可能且简单的解决方案是:

VALUES_TYPE = [('a','A'),('b','B'),('c','C')]

type = fields.Selection(VALUES_TYPE )

dict(VALUES_TYPE )[self.type]