资讯专栏INFORMATION COLUMN

Odoo domain写法及运用

用户84 / 1762人阅读

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的介绍就到此结束了,有什么问题,请大家多多指教。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41680.html

相关文章

  • Odoo权限管理

    摘要:在中,使用用户组来管理权限,一个特殊的用户组是员工员工组,所有的用户都属于这个组,这个组里包含一些基本的权限。字段级别设置表中的字段的访问权限。 在Odoo中,使用用户组(res.groups)来管理权限,一个特殊的用户组是 员工/员工(base.group_user) 组,所有的用户都属于这个组,这个组里包含一些基本的权限。四种权限级别(粒度越来越细):1.菜单/对象级别设置哪些人可...

    mikasa 评论0 收藏0
  • Odoo 基础教程系列」第七篇——从 Todo 应用开始(6)

    摘要:今天这个系列教程即将迎来它的最后一篇内容了,我们将要来学习中权限相关的内容。在的权限管理体系中,同样也有用户组这一概念的存在,和其他框架如可以说大同小异。通常和权限相关的内容,我们都会在模块的目录下进行定义,记录集规则的定义自然也不例外。 在今年的情人节(2018.02.14)那天,我写了一篇博客说即将要开一个坑,也就是大家在看的这个系列的教程。今天这个系列教程即将迎来它的最后一篇内容...

    zeyu 评论0 收藏0
  • Odoo 基础教程系列」第五篇——从 Todo 应用开始(4)

    摘要:在前面教程中,我们使用了两种类型的视图和今天我们将学习使用另一种类型的视图搜索视图。大家可以试试看同时应用多个分组,或者将分组和过滤器组合使用,仔细观察和思考产生的结果。还是老规矩,教程中的代码会更新在仓库中。 showImg(https://segmentfault.com/img/bVbgO85?w=1950&h=1300); 在前面教程中,我们使用了两种类型的视图——TreeVi...

    xiyang 评论0 收藏0
  • Odoo 基础教程系列」第一篇——环境准备

    摘要:安装好后,在中执行查看版本信息,应该会看到输出如下信息版本号可能会不同如果提示未找到,则需要手动将用户基础目录下的添加到中。相关文章基础教程系列第篇开天坑啦 showImg(https://segmentfault.com/img/bV4GZu?w=1262&h=911); 之前说好的 「Odoo 基础教程系列」终于来了(撒花)~刚过完年重新投入到工作中,一下子事情有点多都要忙不过来了...

    szysky 评论0 收藏0
  • odoo12-创建报价单显示当前客户购买同一个产品的上一次的价格

    最终实现的样子 showImg(https://segmentfault.com/img/bVbu6hU?w=1273&h=652); 代码 sale_views.xml(不做解释,可以一起学习探讨) view.sale.order.line.inherit.sale.history sale.order ...

    sorra 评论0 收藏0

发表评论

0条评论

用户84

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<