Odoo 10 选择字段值

标签 odoo field odoo-10 getvalue

如何获取 odoo 10 中的选择字段值?

def compute_default_value(self):
    return self.get_value("field")

我试过了,

def compute_default_value(self):
   return dict(self._fields['field'].selection).get(self.type)

也尝试过这个,但它不起作用。 请帮助我,我找不到解决方案。

谢谢。

最佳答案

您可以通过以下方式执行此操作:

self._fields['your_field']._desription_selection(self.env)

这将返回对(值,标签)的选择列表。

如果您只需要可能的值,可以使用 get_values 方法。

self._fields['your_field'].get_values(self.env)

但这不是一种常见的方式。大多数时候,人们以不同的方式定义选择,然后使用这些定义。例如,我通常使用类来实现这些目的。

class BaseSelectionType(object):
    """ Base abstract class """

    values = None

    @classmethod
    def get_selection(cls):
        return [(x, cls.values[x]) for x in sorted(cls.values)]

    @classmethod
    def get_value(cls, _id):
        return cls.values.get(_id, False)


class StateType(BaseSelectionType):
    """ Your selection """
    NEW = 1
    IN_PROGRESS = 2
    FINISHED = 3

    values = {
        NEW: 'New',
        IN_PROGRESS: 'In Progress',
        FINISHED: 'Finished'
    }

你可以在任何你想要的地方使用这个类,只需导入它即可。

state = fields.Selection(StateType.get_selection(), 'State')

在代码中使用它们真的很方便。例如,如果您想在特定状态下执行某些操作:

if self.state == StateType.NEW:
    # do your code ...

关于Odoo 10 选择字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46324252/

相关文章:

odoo-8 - Odoo - 更改 one2many TreeView 中的特定列颜色

python - 如何更改odoo 10中登录页面和销售点页面的标题?

python - Odoo 9 qweb float 除以零

python - 如何将我的自定义菜单添加到门户用户菜单列表?

java - 待遇到类内场。通过 getter 还是显式?

mysql - 如何在MySql中复制多条记录?

odoo - 如何在 TreeView 中指定列宽

odoo - @api.constrains 无法正常工作

java - 访问私有(private)字段以进行 junit 测试

python - 需要以0.25的倍数四舍五入