博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Odoo domain写法及运用
阅读量:7230 次
发布时间:2019-06-29

本文共 2235 字,大约阅读时间需要 7 分钟。

Domain的写法

Domain是一个元组,由3个元素组成 (字段名, 操作符, 值)

字段名

如果是Many2one/Many2Many/One2many字段,可以通过'.'取出对应的属性,如:

('routing_id.operation_ids.workcenter_id','=', active_id)

操作符

符号 说明
=,>.<,>=,<=,!= 比较运算,等于,不等于,大于,大于等于,小于,小于等于
like 模糊匹配,通过%value%匹配
=like 可以使用模式匹配,下划线-匹配一个字符,百分号%匹配零或者多个字符
ilike 类似like,但是忽略大小写
=ilike 类似=like,但是忽略大小写
not like 通过%value%不匹配的
not ilike 类似not like,但是忽略大小写
=? 未设置或者等于,未设置表示当值是None或者是False,其余和=一样
in 判断value是否在元素的列表里面
not in 判断value是否不再元素的列表里面
child_of 判断是否value的子记录

示例:

('company_id','child_of',[user.company_id.id])('company_level','not in',('common_company'))

有一个要注意的地方,'in'可以反向表示,比如:

('user_ids', 'in', user.id)

应用场景是当一个model中的字段是user_ids = field.Many2many('res.users'),我们可以将这个model的权限赋给这些用户,只有这些用户可以访问

mrp_dashboard_rule
[('user_ids', 'in', user.id)]

包括字符串,True或False,数字等

在xml中,能取出当前登录用户user对象,你可以取出user.id,user.company_id.id等

条件间的逻辑前缀

符号 说明
& 'AND'或者'与',表示后面2个条件同时满足。默认关系,可以省略
| 'OR'或者'或',表示后面2个条件满足一个就行
'NOT'或者'非',将后面一个条件反转,如果是True,就变成False

示例:

[('name', '=', 'Allen'), '|', ('language.code', '!=', 'en_US'), ('company_id', '=', user.company_id.id)]

Domain的使用场景

1.关联字段

(Many2one/One2many/Many2many)过滤出不同的选择结果

default_debit_account_id = fields.Many2one('account.account', string='Default Debit Account', domain=[('deprecated', '=', False)])

如上:只有当account.account中字段deprecated=False的记录才能被选择显示

2.过滤出想要显示的记录

在ir.actions.act_windon中添加Domain,当某个地方调用这个动作时,只显示符合domain条件的记录

Opportunities
crm.lead
kanban,tree,form,graph,calendar
[('type','=','opportunity')]
{ 'search_default_partner_id': active_id, 'default_type': 'opportunity' }

3.权限过滤

Account Entry
['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]

4.搜索过滤

crossovered.budget.search
crossovered.budget

Domain的使用场景还有许多,我就不一一列举了。

Domain的介绍就到此结束了,有什么问题,请大家多多指教。

转载地址:http://wycfm.baihongyu.com/

你可能感兴趣的文章
放开那个程序员
查看>>
构建高性能数据库缓存之Redis(一)
查看>>
测试驱动开发
查看>>
解决MySQL不允许从远程访问
查看>>
puppet介绍及基于httpd实例部署
查看>>
UML常用工具之三--RSA
查看>>
iis7 appcmd的基础命令及简单用法
查看>>
用脚本实现移动某目录下文件名符合指定规则的文件到另一个目录的功能
查看>>
关于SQL镜像配置报错
查看>>
终于找到解决方案了,Qt的Model/View Framework解析
查看>>
线程信息的获取和设置
查看>>
Databricks Scala 编程风格指南
查看>>
Tkinter,label内容随多选框变化
查看>>
PHP开发中的数据类型 ( 第3篇 ) :Heaps
查看>>
网络七层协议
查看>>
4种删除Word空白页的小技巧,都是你需要用到的!
查看>>
单服务器MySQL主从复制实践
查看>>
CentOS 7 root口令恢复
查看>>
| 刘知远:让计算机听懂人话
查看>>
苹果收购初创公司Tueo Health,哮喘监测或将应用到Apple Watch
查看>>