---------
更新日期:
09:10 2016-03-03 星期四
---------
* Domain 表达式
        
    # 用于过滤记录数,相当于sql的where
       ('field', 'operator',value) 每个条件表达式是元组类型
       第一个是对象的一个column,也就是字段名
       第二个是比较运算符
       第三个就是用来比较的值
     domain=[('user_id', '=', uid)] 当前用户做为条件过滤
    #比较运算符如下:
      <,>,<=,>=,!=
      =?
      =like
      like
      not like
      ilike(大小写不敏感)
      not ilike
      =ilike
      child_of  找直接和间接的子对象
      in
      not in       
    #条件可以用逻辑符连起来  用列表类型来组织
      逻辑运算符作为前缀放置于条件前面
      | &  必须两个条件链接 !作用于一个条件  理解时,从里往外剥
     
      & 是且的意思,是默认
      |是或
       ! 是非,相反的意思   
       ['!',('user_id','=',uid)]  不是当前用户的记录
       ['|',('user_id','=',uid),('user_id','=',False)] 不是当前用户,或没有用户的记录
       复杂一点的:
       ['|', ('message_follower_ids', 'in', [user.partner_id.id]),'|', ('user_id', '=', user.id),
             ('user_id', '=', False)]
       逻辑是连后面两个domain条件
     
       再来一个
       ['|','|',('group_ids','in',[g.id for g in user.groups_id]),('user_id','=',user.id),
         '&',('user_id','=',False),('group_ids','=',False),'|','|',('company_id','=',False),
         ('company_id','child_of',[user.company_id.id]),('company_id.child_ids','child_of',[user.company_id.id])]
       分解理解:
       ['|',
        '|',('group_ids','in',[g.id for g in user.groups_id]),('user_id','=',user.id),
        '&',('user_id','=',False),('group_ids','=',False),
        '|',
        '|',('company_id','=',False),('company_id','child_of',[user.company_id.id]),
        ('company_id.child_ids','child_of',[user.company_id.id])]
      
       domain="[('create_date','=',(context_today() + datetime.timedelta(days=-1)).strftime('%%Y-%%m-%%d'))]"
       domain="[('date','&lt;=',time.strftime('%%d/%%m/%%Y'),
                 ('date','&gt;=',((context_today()-relativedelta(months=3)).strftime('%%d/%%m/%%Y')))]"
       过去三个月
      
    # 在Action中定义,domain用于对象默认的搜索条件
       <field name="domain">[('state','not in',('draft','sent','cancel'))]</filed>
        打开订单窗口,不搜索处于('draft','sent','cancel') 三种状态的订单
       
    # 在对象(或视图)的关联字段 字段值 domain 用于过滤
        'product_id':fields.many2one('product.product','Product',domain=[('sale_ok','=',True)],chang_default=True)   
        定义关联产品,只显示可销售产品
   
    # 在搜索视图 domain用于自定义过滤条件
        <field name="name" string="Sale Order" filter_domain="['|'('name', 'ilike',self),('client_order_ref','ilike',self)]"
        在搜索视图输入订单编号,同时按订单编号和客户关联编号搜索
        <filter string="My Sales Orders" domain="[('user_id','=',uid)]" help="My Sales Orders" icon="terp-personal"
            name="my_sale_orders_filter"    />
   
    # 在记录规则中定义 domain 用于定义用户对对象记录的访问权限
       <field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]
       定义用户允许查询未指定分公司或订单指定分公司用户具有的访问权限的销售订单
       ['|',('section_id','=',user.default_section_id.id),('section_id','=',False)]
       查看自己的团队
      
* 实例:
    # 过滤当天的订单
     [('date_order','<=', datetime.datetime.combine(
       context_today(),datetime.time(23,59,59))),
      ('date_order','>=', datetime.datetime.combine(context_today(), datetime.time(0,0,0)))]

(23)odoo中的domain表达式的更多相关文章

  1. Odoo中的domain

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826127.html 一:domain表达式 domain表达式:通常用来筛选数据记录.它们使用特殊的语法 ...

  2. Odoo 中group domain的优化应用

    首先一个前提是 odoo 默认情况下 一个menu 只能绑定一个action 而这个action中只有一个domain,而我们的需求是需要点击菜单,然后根据用户所属的组的不同而选择不同的action, ...

  3. 利用Python的三元表达式解决Odoo中工资条中城镇、农村保险的问题

    Python中没有像C#中有三元表达式 A?B:C 但在python中可以通过 A if condition else B 的方式来达到同样的效果. 例如 : 1 if True else 0 输出 ...

  4. (19)odoo中的javascript

    -----------更新日期15:17 2016-02-16 星期二-----------* 用到的js库   我们可以打开 addons/web/views/webclient_template. ...

  5. Odoo中的五种Action详解

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826232.html Odoo中的五种action都是继承自ir.actions.actions模型实现的 ...

  6. Odoo中的ORM API(模型数据增删改查)

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826214.html 一:增 1:create():返回新创建的记录对象 self.create({'na ...

  7. Odoo中Qweb使用入门

    参考 可参考官网例子https://doc.odoo.com/trunk/web/qweb/或 http://thierry-godin.developpez.com/openerp/tutorial ...

  8. C#中的Lambda表达式和表达式树

    在C# 2.0中,通过方法组转换和匿名方法,使委托的实现得到了极大的简化.但是,匿名方法仍然有些臃肿,而且当代码中充满了匿名方法的时候,可读性可能就会受到影响.C# 3.0中出现的Lambda表达式在 ...

  9. odoo中self的使用

    一:self是什么 目前新版的Odoo中使用到的self,是对  游标cr.用户ID.模型.上下文.记录集.缓存  的封装. 我们可以通过 self.XX 获取到这些封装的东西,比如:self.cr. ...

随机推荐

  1. Using Pre-Form Trigger In Oracle Forms

    Pre-Form trigger in Oracle Forms fires during the form start-up, before forms navigates to the first ...

  2. github 修改fork的代码之后如何提交代码并pull request

    官方的解释还是有点模糊,我是参照这篇文章来的. http://www.linuxidc.com/Linux/2012-12/76922.htm 关于Git的版本管理的原理,我是从这篇文章里面学习的. ...

  3. [C和指针]第四部分

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  4. 比Redis更快:Berkeley DB面面观

    比Redis更快:Berkeley DB面面观 Redis很火,最近大家用的多.从两年前开始,Memcached转向Redis逐渐成为潮流:而Berkeley DB可能很多朋友还很陌生,首先,我们简单 ...

  5. 详解公用表表达式(CTE)

    简介 对于SELECT查询语句来说,通常情况下,为了使T-SQL代码更加简洁和可读,在一个查询中引用另外的结果集都是通过视图而不是子查询来进行分解的.但是,视图是作为系统对象存在数据库中,那对于结果集 ...

  6. 【T-SQL系列】FOR XML PATH 语句的应用

    DECLARE @TempTable TABLE ( UserID INT , UserName ) ); INSERT INTO @TempTable ( UserID, UserName ) , ...

  7. 使用Select命令创建菜单

    创建文本菜单的一半功夫都花在了创建菜单布局和获取输入的字符上.bash shell提供了一个很容易上手的小工具来自动完成这些工作select命令允许从单个命令行创建菜单,然后在提取输入的答案并自动处理 ...

  8. NPN&PNP

    一.晶体管基础知识 晶体管分2种:NPN.PNP 晶体管通常封装为TO-92,下面是元件实物图 和 元件符合: NPN: 当电压和电流被加到基极上时,NPN晶体管: 其工作原理: 就像水龙头—给控制开 ...

  9. Maven聚合与继承

    分别为两种不同形式的聚合 相关代码如下: https://github.com/humeng126/account-parent_1 https://github.com/humeng126/acco ...

  10. Java源码初学_AbstractList&AbstractCollection

    一.AbstractCollection抽象类:(提供了Collection接口的骨干实现,以减少实现接口所需要的工作) 1.contains方法 contains方法,通过迭代器对于列表的每一个元素 ...