odoo domain的写法

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条件的记录

Opportunities crm.lead kanban,tree,form,graph,calendar [('type','=','opportunity')] { 'search_default_partner_id': active_id, 'default_type': 'opportunity' }
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.budget
1
2
3
4
5
6
7
8
9
10
11
12
13
14

Domain的使用场景还有许多,我就不一一列举了。
Domain的介绍就到此结束了,有什么问题,请大家多多指教。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值