Odoo 16字段readonly多嵌套条件配置报错求助
Odoo 16 字段readonly条件解析错误修正
错误原因分析
你的XML代码触发ParseError的核心问题是不符合Odoo domain表达式的语法规范:
- Odoo的domain采用前缀表示法(波兰表达式),逻辑运算符(
|/&)必须直接作为数组元素,不能用括号包裹条件组来分组。 - 代码中多余的尾逗号(如每个条件后的最后一个逗号)也会导致解析失败。
修正后的XML代码
<field name="campo" attrs="{'readonly': [ '|', '&', ('v1', '=', 'A'), '|', ('v3', '=', 'X'), ('v3', '=', 'Y'), '&', '&', ('v1', '!=', 'A'), ('v2', '!=', 'B'), '|', '|', ('v3', '=', 'X'), ('v3', '=', 'Y'), ('v3', '=', 'Z') ]}"/>
逻辑对应说明
修正后的domain严格匹配你需求的逻辑:
- 第一分支:
& ('v1', '=', 'A') | ('v3', '=', 'X') ('v3', '=', 'Y')→ 对应v1=A AND (v3=X OR v3=Y) - 第二分支:
& & ('v1', '!=', 'A') ('v2', '!=', 'B') | | ('v3', '=', 'X') ('v3', '=', 'Y') ('v3', '=', 'Z')→ 对应v1≠A AND v2≠B AND (v3=X OR v3=Y OR v3=Z) - 最外层的
|将两个分支组合,实现原需求的OR逻辑。
内容的提问来源于stack exchange,提问作者Carlos Enrique Ramírez Martín
相关产品推荐
相关产品推荐

