Odoo Selection字段动态定义 Selection 列表内容的三种方式

一、简介

Selection字段类型一般作为下拉列表显示,selection 的选项内容基本是固定,但是针对一些特殊要求,根据权限组显示不同的 selection 内容,也可以通过动态创建选项的内容,下面简单介绍Selection的三种使用案例。

好文章 记得收藏+点赞+关注额 !!!

---- Nick.Peng


二、固定的 Selection 内容

  • 如图,此种方式最常见
    在这里插入图片描述

三、根据权限组显示不同的 selection 内容

  • 指定属性selection=’_selection_filter’
    表示引用_selection_filter函数进行不同权限组之间的内容显示。
    在这里插入图片描述

  • _selection_filter函数的定义。
    在这里插入图片描述

    @api.model
    def _selection_filter(self):
        """
        根据权限组显示不同的Selection值
        """
        res_filter = [
            ('math', '数学'),
            ('chinese', '语文'),
        ]
    
        if self.user_has_groups('base.group_system'):
            res_filter += [('english', '英语')]
        elif self._is_principal:
            res_filter = res_filter
        else:
            res_filter = []
    
        return res_filter
    

四、动态创建 selection 内容

  • 创建 filter 字段

    filter = fields.Selection(string=u'等级', selection='_selection_filter')
    
  • 创建_selection_filter函数
    定义一个空的res_filter列表,在ir.config_parameter(系统参数)模型下进行搜索 符合issue_filter_的键值对,并将筛选到的数据加入列表并返回

    @api.model
    def _selection_filter(self):
        res_filter = []
        filter_list = self.env['ir.config_parameter'].search([('key', 'like', 'issue_filter_')])
        for filter in filter_list:
            res_filter.append((filter.key[13:], _(filter.value)))
        
        return res_filter
    
  • 打开字段对应的from视图,等级字段的selection内容还是空的。这时我们激活开发者模式,进入系统设置,创建我们需要的selection内容。具体操作如下图显示:
    在这里插入图片描述

  • 进入系统参数,创建键值对。issue_filter_ 是定义函数式进行模糊查询的字符串 one是selection内容中的键,同理可创建多个符合设定的selection内容。
    在这里插入图片描述

  • 创建好相应的键值对后,刷新界面,效果如下图:
    在这里插入图片描述

结束,以上就是 Odoo Selection 字段的三种定义方式。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值