Domain的写法
原文链接?
Domain是一个元组,由3个元素组成 (字段名, 操作符, 值)
字段名
如果是Many2one/Many2Many/One2many字段,可以通过’.'取出对应的属性,如:
(‘routing_id.operation_ids.workcenter_id’,’=’, active_id)
1
操作符
在这里插入图片描述
示例:
(‘company_id’,‘child_of’,[user.company_id.id])
(‘company_level’,‘not in’,(‘common_company’))
1
2
有一个要注意的地方,'in’可以反向表示,比如:
(‘user_ids’, ‘in’, user.id)
1
应用场景是当一个model中的字段是user_ids = field.Many2many(‘res.users’),我们可以将这个model的权限赋给这些用户,只有这些用户可以访问
mrp_dashboard_rule [('user_ids', 'in', user.id)]1
2
3
4
5
6
值
包括字符串,True或False,数字等
在xml中,能取出当前登录用户user对象,你可以取出user.id,user.company_id.id等
条件间的逻辑前缀
在这里插入图片描述
示例:
[(‘name’, ‘=’, ‘Allen’), ‘|’, (‘language.code’, ‘!=’, ‘en_US’), (‘company_id’, ‘=’, user.company_id.id)]
1
Domain的使用场景
1.关联字段
(Many2one/One2many/Many2many)过滤出不同的选择结果
default_debit_account_id = fields.Many2one(‘account.account’, string=‘Default Debit Account’,
domain=[(‘deprecated’, ‘=’, False)])
1
2
如上:只有当account.account中字段deprecated=False的记录才能被选择显示
2.过滤出想要显示的记录
在ir.actions.act_windon中添加Domain,当某个地方调用这个动作时,只显示符合domain条件的记录
1
2
3
4
5
6
7
8
9
10
11
12
13
3.权限过滤
Account Entry ['|',('company_id','=',False), ('company_id','child_of',[user.company_id.id])]1
2
3
4
5
6
7
4.搜索过滤
crossovered.budget.search crossovered.budget1
2
3
4
5
6
7
8
9
10
11
12
13
14
Domain的使用场景还有许多,我就不一一列举了。
Domain的介绍就到此结束了,有什么问题,请大家多多指教。