Odoo中的domain


轉載請注明原文地址:https://www.cnblogs.com/ygj0930/p/10826127.html

 

一:domain表達式

    domain表達式:通常用來篩選數據記錄。它們使用特殊的語法,以便於Odoo ORM 將它們解析后生成對應的SQL WHERE數據庫篩選語句。

 

二:domain的寫法

    domain表達式是一個條件列表,每個條件是一個形如('field_name', 'operator', value')的元組。

filed_name 是需要篩選的字段,它可以使用點(.)來訪問關系模塊的字段。
value 是一個Python表達式的值。它可以使用字符值,比如:字符串,數字,布爾值,或則列表、某個字段、用戶在context中自定義的有效的值。
operator 可以為:
    常用的操作符:<,>,<=,>=,=,!=。
    '=like'通配符,使用下划線(_)時,匹配一個任意字符,使用百分號(%)時,匹配多個字符。
    'like'匹配一個’%value%’的字符串。’ilike’與此類似但不區分大小寫。‘not like’和‘not ilike’也可以使用
    'child of'在層級關系中,篩選子集
    'in'和’not in’篩選是否在一個列表里面,所以,給的值應該是個list。當在’to-many’的關系字段中,‘in’的作用和contains的作用一樣

    domain表達式是一個包含多項內容的list,因此,可以包含多個條件表達式元組。 默認情況下這些條件之間是用AND邏輯符連接的,也就是說,它只返回滿足所有條件的記錄集。

    也可以用顯式的邏輯連接符:and連接符(&,默認使用),或連接符(|)。這些連接符后面跟着兩項內容,可以畫成遞歸樹的形式理解。

    感嘆號(!),是非操作符(NOT),作用於緊挨它的后一個項。因此,它應該出現在否定項的前面。比如,['!', ('is_done','=',True)]

 

    例子:

['|', ('message_follower_ids', 'in', [user.partner_id.id]),
      '|', ('user_id', '=', user.id), ('user_id', '=', False)]

    畫成遞歸樹解讀:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM