Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn

由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解

本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!

开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

如果您登录系统碰到问题,请在微信公众号留言:

当需要继承并覆写Odoo的Selection 字段,如何确定新选项的位置


  • 管理员

    我们知道Odoo的Selection字段的选项值为包含多个元组的一个列表,其中每个元组包含两个字符串成员,第一个成员为内部保存值,第二个用来界面显示,比如

    class TestModel(model.Model):
        _name = 'test.model'
    
        myselection =  fields.Selection([('a', 'A'), ('b', 'B')], string='MySelection')
    

    当在新的模块里需要继承修改这个Selection字段的选项时,我们可以使用selection_add, 比如:

    class TestModel(model.Model):
        _inherit = 'test.model'
    
        myselection =  fields.Selection(selection_add=[('c', 'C')])
    

    问题是这样的继承得到的结果是[('a', 'A'), ('b', 'B'), ('c', 'C')],新添加的选项在列表的尾端。那有没有办法指定新添加选项在列表中的位置呢?在Odoo13以后实际上我们可以在选项值后面添加由单个成员组成的元组来确认新选项的插入位置,比如上例中:

    selection_add = [('c', 'C'), ('b',)] 
    > result = [('a', 'A'), ('c', 'C'), ('b', 'B')]