---------
更新日期:
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 恢复SVN无法还原的文件 svn使用了还原,但本地的没有提交找回没提交代码的方法

    http://blog.sina.com.cn/s/blog_750167060102vd2n.html

  2. <转>“人脉投资”的10条建议

    谁都知道人脉很重要,所以有些人非常勤奋的“做人脉”,他们往往会这样做—— 积极的参与各类线下活动,逢人就换名片.加微信. 见到名人或者重要人物必合影,而且他们还会掏出手机来给你看. 逢年过节,给所有他 ...

  3. [UVa1210]Sum of Consecutive Prime Numbers(前缀和,打表)

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  4. [51NOD1095] Anigram单词(map)

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1095 字典的单词在map中排序和不排序各存1次,查的时候相减. ...

  5. SQL 批量删除数据表

    ) while(exists(select * from sysobjects where name like '表名前缀%')) begin select @name=name from sysob ...

  6. ubuntu14.04 64位系统下编译3.13.11内核源码

    该过程一共分为四步: 1.下载内核:我下载的是3.13.11这个版本的内核! 2.解压内核:我将其解压/home/jello/Downloads/linux-3.13.11目录下!下文将会基于此目录编 ...

  7. yii::app(); 怎么得到module、controller、action的名字

    $module = Yii::app()->controller->module->id; $controller = Yii::app()->controller->i ...

  8. Java的内存分配策略

    简单来说,对象内存分配主要是在堆中分配.但是分配的规则并不是固定的,取决于使用的收集器组合以及JVM内存相关参数的设定 以下介绍几条基本规则(使用的ParNew+Serial Old收集器组合): 一 ...

  9. Spring的DI(Ioc) - 注入集合类型

    1: 首先给service添加集合类型的属性,并提供getter, setter package cn.gbx.serviceimpl; import java.util.ArrayList; imp ...

  10. [转]十款提高开发效率的PHP编码工具

    1 . PHPUnit 测试在软件开发中是相当重要的一环,但很多开发者都只是给予很少的时间去测试,因为这工作的确相当耗时,枯燥并且容易出错.为了解决以上问题,自动化测试工具能让开发者编写一系列测试脚本 ...