Odoo中如何配置Many2many字段使其在搜索视图中可搜索
Odoo Many2many字段搜索功能配置调整方案
问题原因
原有配置直接将Many2many类型的employee_ids字段放入搜索视图时,Odoo默认使用=操作符做完全匹配,即只有当记录关联的员工集合与选中值完全一致时才会命中结果,不符合多对多字段“关联即匹配”的搜索预期,同时搜索弹窗的员工选值范围未继承模型字段上的domain约束,会出现可选值与表单规则不一致的问题。
调整步骤
只需要修改搜索视图中employee_ids字段的属性,补充选值范围和搜索匹配规则即可,调整后完整的搜索视图代码如下:
<field name="name">training.request.filter</field> <field name="model">training.request</field> <field name="arch" type="xml"> <search string="Search Training Requests"> <field name="employee_ids" domain="[('id', '!=', manager_id)]" filter_domain="[('employee_ids', 'in', self)]" /> </search> </field>
配置说明
domain="[('id', '!=', manager_id)]":与模型字段上的domain规则保持一致,限制搜索时弹出的员工选择列表中排除负责人,和表单编辑时的选值逻辑统一filter_domain="[('employee_ids', 'in', self)]":覆盖默认的精确匹配逻辑,只要培训请求关联的员工列表包含选中的员工,就会出现在搜索结果中,符合多对多字段的常规搜索需求
调整完成后升级模块,更新搜索视图即可正常使用该字段的搜索功能,既支持下拉选择员工精确匹配,也支持输入员工姓名模糊检索后选中搜索。
内容的提问来源于stack exchange,提问作者user16303509
相关产品推荐
相关产品推荐

