<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                前面幾篇中都出現了Domain表達式,今天學習下Domain表達式。 #### 什么是Domain ~~~ [('create_uid','=',user.id)] ~~~ Domain是個多條件的列表,每個條件是一個三元表達式:[(字段名,操作符,值), (字段名,操作符,值)] #### Domain使用場合 * 權限管理中的行級權限 * tree視圖的過濾器 * 其它學習到了再補充 #### 字段名 當前模型的字段或者是通過點操作符訪問當前模型的Many2one / Many2Many對象。如果左邊是Many2Many對象的時候,則表示左邊只要任意一個值符合條件則符合條件。 #### 操作符 | 名稱 | 說明 | | --- | --- | | =,!=,>,>=,<,<= | 比較運算,等于,不等于,大于,大于等于,小于,小于等于 | | like | 模糊匹配,可以使用通配符,下劃線“_”匹配一個字符,百分號“%”匹配零或者多個字符 | | ilike | 類似like,不區分大小寫 | | not like | 模糊不匹配的 | | in | 包含,判斷值是否在元素的列表里面 | | not in | 不包含,判斷值是否不在元素的列表里面 | | child_of | 判斷是否value的子記錄,通過_parent_name實現,不太理解 | | parent_left | ??? | | parent_right | ??? | 注意如果需要在xml使用Domain,大于,小于因為和標簽符號一樣所以需要轉義,大于`>`,小于`<` #### 值 值進行篩選的變量,必須能通過操作符來和字段進行比較。 #### 多條件的邏輯運算 ~~~ ['&', ('partner_id.coutnry_id.code', '=', 'CN'), ('partner_id.coutry_id.code', '=', 'US')] ~~~ Odoo是使用了[波蘭表示法](http://baike.baidu.com/link?url=lvYV-9HbGnLEnE90E57LoF84uFxFJZtCNbZiQjbATWs-qXGT_GdXz0TYlnNeMw98RML1ffUv1uHynb5D92vwSnJ2MWMvW9875TkFY1ccgH2TN5MMQj-UdTpGXRvgGWuNjtGrN-cnMT25GiuZ0-Gonq),簡單來說,波蘭表示法是一種操作符置于操作數前,并且不需要括號仍然能無歧義地解析表達的方法。 波蘭表示法的運算順序 以二元運算為例,從左至右讀入表達式,遇到一個操作符后跟隨兩個操作數時,則計算之,然后將結果作為操作數替換這個操作符和兩個操作數;重復此步驟,直至所有操作符處理完畢。 舉個栗子 ~~~ ['|','&','|',a,b,c,'&',d,e] ~~~ 其中a,b,c,e,f,g分別是不帶邏輯運算符的表達式,表達式的運算順序: ~~~ ['|','&','|',a,b,c,'&',d,e] ['|','&',(a | b),c,'&',d,e] ['|',((a | b) & c),'&',d,e] ['|',((a | b) & c),(d & e)] [(((a | b) | c) | (d & e))] ~~~ 邏輯運算符包括 | 符號 | 說明 | | --- | --- | | 丨(or) | 或,二元運算 | | &(and) | 與,二元運算 | | !(no) | 非,單目運算 | 邏輯運算符默認是'與',‘與’運算符可以不寫。 實例 “名字為 ABC”,就是一個最簡單的單條件Domain。 ~~~ [('name','=','ABC')] ~~~ “名字為 ABC 而且 語言編碼不為en_US”,Domain里條件默認邏輯關系就是and,所以如下。 ~~~ [('name','=','ABC'), ('language.code','!=','en_US')] ~~~ “名字為 ABC 而且語言編碼不為 en_US 而且國家的編碼為 be 或者 de”。 ~~~ [('name','=','ABC'), ('language.code','!=','en_US'), '|',('country_id.code','=','be'), ('country_id.code','=','de')] ~~~ 如果我們要做到這個效果 ~~~ A and (B or C) and D and E ~~~ 先從里面開始,把or提前 ~~~ A and (or B C) and D and E ~~~ 把里面的and提前,去掉括號 ~~~ and A or B C and D E ~~~ 所以最后的domain可以這樣寫 ~~~ A, '|', B, C, D, E ~~~ 當然了,我們為什么不寫得讓自己也容易看一點呢,如下: ~~~ A, D, E, '|', B, C ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看