---------
更新日期:
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. Android 计算器界面

    高仿魅族魅蓝NOTE 2风格 <?xml version="1.0" encoding="utf-8"?> <TableLayout xmln ...

  2. jquery之insertBefore(),insertAfter(),prependTo(),appendTo()用法详解

    导航: 1,insertBefore(),insertAfter(),prependTo(),appendTo()这四个函数用法几乎一样 2, 与之相对的有四个函数:Before(),After(), ...

  3. background:linear-gradient()

    文章一   http://www.runoob.com/css3/css3-gradients.html 文章二:http://www.w3cplus.com/content/css3-gradien ...

  4. Creating HTML table with vertically oriented text as table header 表头文字方向

    AS an old question, this is more like info or reminder about vertical margin or padding in % that ta ...

  5. hdu 1348 (凸包求周长)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=1348 Wall Time Limit: 2000/1000 MS (Java/Others)    Mem ...

  6. 拓扑排序--UVa10305

    题目 Output: standard output Time Limit: 1 second Memory Limit: 32 MB John has n tasks to do. Unfortun ...

  7. FTP常用故障代码注解

    FTP错误列表 出处:http://bbs.enet.com.cn/UserControl?act=13&threadID 作者: |秒杀』| 详细的FTP错误列表 Restart marke ...

  8. 关于Java控制台输入输出乱码问题

    产生原因:因为这个开源项目的默认字符编码为UTF-8,所以我的控制台的字符编码也自动变成了UTF-8,而键盘的输入流的默认格式是GBK格式,这样就造成了在GBK转UTF-8的过程中产生的奇数乱码错误( ...

  9. 笔记本_thinkpad_e40_FN

    1. 开机时按F10进入bios 然后在 bios 中选择 system configuration,看一下其中的 action keys mode .如果此选项后面为 enable 的话,是不需要按 ...

  10. Git学习(3)创建版本库

    什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以追踪历史,或 ...