Skip to Content

Odoo domain 表达式实例详解

Odoo/OpenERP Domain 条件表达式总结

此总结助您快速理解并运用这些表达式。

Domain 条件表达式规则

  1. 基本格式
    • 最简格式: [('字段', '操作符', 值)]
    • 示例: [('shenqr.user_id', '=', uid)]
  2. 元组结构
    • 每个条件是三元组: (字段, 操作符, 值)
    • 字段:对象的 column(字段名)
    • 操作符: =, !=, >, >=, <, <=, like, ilike, in, not in, child_of, parent_left, parent_right
    • 值:用于比较的值
  3. 逻辑运算符
    • 默认逻辑运算符为 &(AND)
    • |:OR
    • !:NOT
    • 在 XML 文件中,& 需用 & 表示,> 用 >,< 用 <,!= 用 <>

简单表达式

  1. 过滤状态为待批
    [('state', '=', 'wait_prove')]
  2. 过滤状态为草稿或待批
    [('state', 'in', ['draft', 'wait_prove'])]
  3. 过滤请假天数大于 3 天
    [('tians', '>', 3)]

带逻辑运算符的简单表达式

  1. AND 运算
    [('state', '=', 'wait_prove'), ('tians', '<=', 1)]
  2. OR 运算
    ['|', ('state', '=', 'wait_prove'), ('tians', '<=', 1)]
  3. 示例:副经理待审批的请假单
    [('state', '=', 'wait_prove'), ('tians', '<=', 1)]

稍复杂的表达式

  1. AND 和 OR 的组合
    ['&', ('state', '=', 'wait_prove'), '|', ('tians', '>', 1), ('shenqr.user_id', '<>', uid)]
  2. 示例:经理待审批的请假单
    [('state', '=', 'wait_prove'), ('tians', '>', 1), ('shenqr.user_id', '<>', uid), ('shenqr.department_id', '=', department_id), ('shenqr.user_id.groups_id', '=', 59)]

更复杂的表达式

  1. 嵌套逻辑运算
    ['|', '&', '|', ('shenqr.user_id.groups_id', '=', 60), ('shenqr.user_id.groups_id', '=', 61), ('state', '=', 'wait_prove'), '&', ('state', '=', 'depmanager_proved'), ('tians', '>', 3)]
  2. 示例:总经理待审批的请假单
    ['|', '|', '&', '|', ('shenqr.user_id.groups_id', '=', 60), ('shenqr.user_id.groups_id', '=', 61), ('state', '=', 'wait_prove'), '&', ('state', '=', 'depmanager_proved'), ('tians', '>', 3), '&', ('state', 'in', ['proved', 'rejected']), ('tians', '>', 3)]

注意事项

  • 多个条件默认用 &(AND)连接。
  • 在 XML 文件中,& 需用 & 表示,> 用 >,< 用 <,!= 用 <>。
  • 使用括号和逻辑运算符组合复杂条件。

借助这些规则和示例,您能快速构建并理解 Odoo/OpenERP 的 Domain 条件表达式,用于过滤和查询数据。如需更多详细信息,可参考 Odoo 的官方文档。

Odoo domain 表达式实例详解
6776, Administrator March 31, 2024
Tags
Archive