如何解决Many2many复选框选中odoo
我一直致力于在 odoo12 中开发模块。我有一个很多人的字段。场景是当检查特定的多种2many字段时,将出现另一个字段,它在未选中时应该是不可见的。
测试类包含名称字段名称包含:test1,test2,test3 工作类包含 many2many 字段:
test = fields.Many2many('test.py')
test_by = fields.Char('Test')
XML
<field name="test" widget="many2many_checkBoxes"/>
当从复选框中选择 test1 时,字段 test_by 应该出现。
解决方法
如果选择了 fields_view_get
,您可以覆盖 test_by
函数以显示 test1
字段。您需要找到 test1
记录并检查它是否在 test
记录集中。
在以下示例中,如果选择了 description
标签,我们将显示 product
字段。
import json
from lxml import etree
from odoo import models,fields,api
class CRMLead(models.Model):
_inherit = 'crm.lead'
@api.model
def fields_view_get(self,view_id=None,view_type='form',toolbar=False,submenu=False):
res = super(CRMLead,self).fields_view_get(view_id=view_id,view_type=view_type,toolbar=toolbar,submenu=submenu)
if view_type == 'form':
params = self.env.context.get('params',{})
if 'id' in params:
lead = self.env['crm.lead'].browse(params['id'])
# You can use `search` method to find `test1` record
tag_id = self.env.ref('crm.categ_oppor1')
if tag_id in lead.tag_ids:
doc = etree.XML(res['arch'])
for node in doc.xpath("//field[@name='description']"):
node.set("invisible","0")
modifiers = json.loads(node.get("modifiers"))
modifiers['invisible'] = False
node.set("modifiers",json.dumps(modifiers))
res['arch'] = etree.tostring(doc,encoding='unicode')
return res
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。