---------
更新日期:
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. eclipse启动报错eclipse failed to create the java virutal machine

    早上一来,我的eclipse就无法启动了,错误就是这句话: eclipse failed to create the java virutal machine 直译就是eclipse无法创建JAVA虚 ...

  2. Mysql事件学习

    出自:http://blog.chinaunix.net/uid-20639775-id-3323098.html Mysql事件学习 在系统管理或者数据库管理中,经常要周期性的执行某一个命令或者SQ ...

  3. IIS网站部署注意点

    在IIS上部署网站时,除了在添加网站时配置好相关程序池,主目录,安全性,选择.Netframwork版本这些步骤外, 容易忘记的是有些网站需要打开web服务扩展.

  4. ServiceStack.OrmLite 笔记

    ServiceStack.OrmLite 笔记1 ServiceStack.OrmLite 这个东东就是个orm框架,可以实现类似ef的效果.具体的就不这里班门弄斧了. 支持 SqlServerDia ...

  5. implement "slam_karto" package in Stage simulation

    slam_karto ROS Wiki: http://wiki.ros.org/slam_karto Source: https://github.com/ros-perception/slam_k ...

  6. 51nod 1413 权势二进制 背包dp

    1413 权势二进制 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB  一个十进制整数被叫做权势二进制,当他的十进制表示的时候只由0或1组成.例如0,1,101, ...

  7. 小C的故事(快速学C语言,,,极速版!)

    前几天这篇博客写了太多废话! 删啦~~. 本篇博客只是为chd A协的全嫩小鲜肉入门C语言的预科, 如果你在此处学习C语言, 不幸走火入魔, 小弱概不负责. //请直接随便找个C语言编译器,抄一下下面 ...

  8. 《转》Ubuntu 12.04常用的快捷键

    Ubuntu 12.04常用的快捷键   超级键操作   1.超级键(Win键)–打开dash.   www.2cto.com   2.长按超级键– 启动Launcher.并快捷键列表.   3.按住 ...

  9. iOS - OC Block 代码块

    前言 Block 是一段预先准备好的代码,可以在需要的时候执行,可以当作参数传递.Block 可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值.Block 是 C 语言的,类似于一个 ...

  10. oracle 10g正则表达式 REGEXP_LIKE 用法

    ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与INSTR的功能相似3,REGEXP_SUBSTR :与SUBS ...