Domains域

一个域是一个criteria(度量标准)列表,每个criterion(标准尺度)是一个三元列表或者元组:field_name,operator,value。

field_name(str)

  当前模型的字段名,或者使用点表示法的(穿越Many2one(多对一)的)关系。例如:'street'或者'partner_id.country'。

operator(str)

  操作符,用于field_name与value之间的比较。

  有效的操作符:

    •   =  等于
    •   != 不等于
    •      >   大于 
    •      >= 大于等于
    •    <  小于
    •    <= 小于等于
    •      =?  未设置或等于(如果值要么为None或者False,返回True,其他类似=)
    •      =like 将field_name与值模式匹配,模式中"_"匹配任意单字符,"%"匹配任意的零个或者多个字符
    •    like  将field_name与%value%进行模式匹配,类似于=like,但是匹配前value被%包装
    •      not like 不匹配%value%模式
    •      ilike 不区分大小写 like
    •    not ilike 不区分大小写 not like
    •     =ilike 不区分大小写=like
    •     in 存在于 value,value 应为items列表
    •     not in 不存在于value
    •     child_of  是value记录的子代(子孙)

value 必须与命名的字段是可比较的(通过操作符)

域条件(Domain criteria)可以使用逻辑运算符(以前缀的形式)进行组合:

  • '&' 逻辑AND,默认操作将criteria与下一条crtiteria进行组合, Arity 2 (两个参数),使用下两个criteria和combinations
  • '|' 逻辑或,Arity 2 (两个参数)
  • '!' 逻辑非 Arity  (1个参数)

例如:

[('name','=','ABC'),
 ('language.code','!=','en_US'),
 '|',('country_id.code','=','be'),
     ('country_id.code','=','de')]
(name is 'ABC')
AND (language is NOT english)
AND (country is Belgium OR Germany)

 

posted @ 2017-02-15 01:02  白守敬  阅读(192)  评论(0编辑  收藏  举报