Odoo中文网|Odoo实施培训

 找回密码
 立即注册
搜索
热搜: Odoo OpenERP 实施
查看: 9033|回复: 0
打印 上一主题 下一主题

域表达式

[复制链接]

26

主题

28

帖子

232

积分

中级会员

Rank: 3Rank: 3

积分
232
跳转到指定楼层
楼主
发表于 2018-5-4 14:18:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 施程浩 于 2018-5-4 14:20 编辑

解析后生成对应的SQL WHERE数据库筛选语句。

域表达式是一个条件列表,每个条件是一个形如('field_name', 'operator', value')的元组。
例:[('is_done','=',False)].

  每个元素的介绍:
filed_name 是需要筛选的字段,它可以使用点.)来访问关系模块的字段。
value 是一个Python表达式的值。它可以使用字符值,
比如:字符串,数字,布尔值,或则列表、某个字段、用户在context中自定义的有效的值。

operator 可以为:
    常用的操作符:<,>,<=,>=,=,!=。
    '=like'通配符,使用下划线(_)时,匹配一个任意字符,使用百分号(%)时,匹配多个字符。
    'like'匹配一个’%value%’的字符串’ilike’与此类似但不区分大小写‘not like’和‘not ilike’也可以使用
    'child of'在层级关系中,筛选子集
    'in'和’not in’筛选是否在一个列表里面,所以,给的值应该是个list。当在’to-many’的关系字段中,‘in’的作用和contains的作用一样

domain表达式是一个包含多项内容的list,因此,可以包含多个条件表达式元组 默认情况下(隐含),这些条件之间是用AND逻辑符连接的,也就是说,它只返回满足所有条件的记录集。
显示的逻辑连接符也可以使用:and连接符(&默认使用),或连接符(|)。这些连接符后面跟着两项内容,以递归的方式。我们一会儿会看见具体的实现。
感叹号(!),是非操作符(NOT),作用于紧挨它的后一个项。因此,它应该出现在否定项的前面。比如,['!', ('is_done','=',True)],这个表达式将筛选所有的没有完成的记录。
例子:
['|', ('message_follower_ids', 'in', [user.partner_id.id]),
当前用户在记录的关注者列表中,或当前用户是负责人,或负责人字段为空值的所有记录。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|技术支持|开发手册|Odoo中文网-远鼎旗下odoo培训网站 ( 苏ICP备15039516号 )

GMT+8, 2024-5-3 18:51 , Processed in 0.011975 second(s), 11 queries , Xcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表