---------
更新日期:
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. 向sql server 导入数据库

    在sql server 中选择数据库.右键,还原数据库 选择源设备,点击添加,选中相应的数据库文件. 在目标数据库栏选择相应的数据库名称 点击下一步.

  2. 正则表达式(/[^0-9]/g,'')中的"/g"是什么意思 ?

    正则表达式(/[^0-9]/g,'')中的"/g"是什么意思 ?     表达式加上参数g之后,表明可以进行全局匹配,注意这里“可以”的含义.我们详细叙述: 1)对于表达式对象的e ...

  3. L0/L1/L2范数的联系与区别

    L0/L1/L2范数的联系与区别 标签(空格分隔): 机器学习 最近快被各大公司的笔试题淹没了,其中有一道题是从贝叶斯先验,优化等各个方面比较L0.L1.L2范数的联系与区别. L0范数 L0范数表示 ...

  4. js 小数相加异常

    var a = 0.1; var b = 0.2; a + b//0.30000000000000004 这个bug可能是因为二进制计算溢出导致的. 解决办法:将小数转换为整数进行计算 计算后结果除以 ...

  5. JAVA中在Myeclipse里把表导入成相应的poco实体类

    参考:地址: http://blog.csdn.net/jintaiyong/article/details/7383982

  6. spring DI原理

    什么是IOC? 也称依赖注入 当一个类,需要另一个类的时候,我们不需要再另一个类里进行创建 对象,spring容器会给我们自动的创建 IOC的实现? 通过一定的技术读取spring.xml文件信息,比 ...

  7. ubuntu安装jdk-6u45-linux-x64.bin___ZC_20160423

    for : Android4.4源码编译 环境 : ubuntu12.04_desktop_amd64 1. 1.1.jdk-6u45-linux-x64.bin 放置于 /home 1.2.命令&q ...

  8. 07 SQL优化技术

    本章提要------------------------------------------------------调优技术及什么时候使用------------------------------- ...

  9. poj1873The Fortified Forest

    链接 居然是WF的水题~ 二进制枚举砍哪些树,剩余的树围成一个凸包. 因为传数组WA了两发,忘记修改排序数组中的p[0]; #include <iostream> #include< ...

  10. Oracle数据库高级查询(五)集合查询

    现实需求有时候需要将多个查询组合到一个查询中去 这时就需要使用集合查询操作了 这个操作类似于数学中的交集,并集,和补集的操作   交集就是返回两个查询共有的记录,关键字是INTERSECT 并集是返回 ...