odoo裡domain條件表示式寫法總結

2021-08-15 02:07:15 字數 2821 閱讀 1128

自己做了個例子

倉庫-儀表板-分揀型別 使用者倉庫1只能看到即墨庫的 使用者2只能看到青島的

設定-使用者組

仿照「倉庫-使用者」組新建乙個使用者組 在模組倉庫下 名稱叫即墨庫管

在繼承選項卡中選中「倉庫-使用者」

然後建立兩個使用者 倉庫1隸屬於即墨庫管 倉庫2隸屬於青島庫管

設定-安全設定-記錄規則

新建乙個規則 名稱「doom倉庫1只能看即墨庫的分揀」

物件stock.picking.type 也就是模型 相當於資料表

規則定義公式寫入[('warehouse_id', '=', 1)]

其中warehouse_id 是表(模型)裡的字段

1是資料 代表即墨庫

完事了1) domain條件表示式規則

最簡單的格式:[('字段', '操作符', 值)]

例:[('shenqr.user_id', '=', uid)]

說明:domain中的單個條件是乙個三個元素組成的元組,所以務必加上()。

元組中第乙個是物件的乙個column,也就是欄位名;

元組中第二個是比較運算子 「=, !=, >, >=, <, <=, like, ilike, in, not in,        

child_of, parent_left, parent_right「 ;(注意:在xml檔案中使用時,'>='要

用'>='表示 ,'<='要用 '<='表示,'!='最好用'><'表示,'>'最好

用'>'表示,'<'最好用 '<' 表示)

元組中第三個就是用來比較的值了。

多個條件用「|」(or),「&」(and),「!」(no)邏輯運算子鏈結。

邏輯運算子作為字首放置於條件前面。「|」與「&」必須兩個條件鏈結,「!」對乙個條件取反。

預設邏輯運算子為「&」。(注意:在xml檔案中使用時,'&'要用'&'表示)

2)  不帶邏輯運算子的簡單表示式

過濾狀態為待批:  [('state', '=', 'wait_prove')]

過濾狀態為草稿、待批:

[('state', 'in', ('draft', 'wait_prove'))]  或者  [('state', 'in', ['draft', 'wait_prove'])]

過濾請假天數大於3天:  [('tians', '>', 3)]

3)  帶邏輯運算子的簡單表示式    

假設a , b分別是不帶邏輯運算子的簡單表示式

a = ('state','><','draft')

b = ('tians', '<=', 1)

a  and  b:    [ a, b ] 或  [ '&' ,  a ,  b ]

a  or     b:    [ '|', a,b ]

eg:請假模組,副經理登入時待審批的請假單(狀態是待批,並且請假天數在一天以內)選單過濾條件:

[('state','=','wait_prove'),('tians', '<=', 1)]

4)  帶邏輯運算子的稍複雜的表示式

同上,假設a , b, c分別是不帶邏輯運算子的簡單表示式

a  and  b  and   c :      [a, b, c]  或則  [ '&', '&', a, b, c]

a    or   b    or    c:      ['|', '|', a , b , c]

a  and  b    or  c:         ['|', '&', a, b, c]   

a  and  (b    or  c):      ['&', a, '|', b, c]

eg:經理待審批的請假單(狀態是待批,並且請假天數大於一天,並且是本部門的職員請假單,並且還不包含自己的請假單)選單過濾條件           

[('state', '=', 'wait_prove'), ('tians', '>', 1), ('shenqr.user_id','<>',uid),('shenqr.department_id','=',department_id),('shenqr.user_id.groups_id', '=', 59)]

5)   帶邏輯運算子的更複雜的表示式

同上,假設a , b, c, e, f, g分別是不帶邏輯運算子的簡單表示式

(a  or  b  and  c)  or ( d and e ) :

['|', '&','|', a, b,  c, '&', d, e, 3)]

eg:總經理待審批的請假單(所有部門副經理或經理狀態為待批的請假單,或3天以上部門經理批准過的請假單)選單過濾條件:

['|', '&','|', ('shenqr.user_id.groups_id', '=', 60), ('shenqr.user_id.groups_id', '=', 61), ('state', '=', 'wait_prove'), '&', ('state','=','depmanager_proved'),('tians', '>', 3)]

(a or b and c)  or (d and e)  or (f  and g)

['|','|', '&','|', a, b, c, '&', d,e,'&', f,g]

eg:總經理全部的請假單(所有部門副經理或經理狀態為待批的請假單,或3天以上部門經理批准過的請假單,或3天以上狀態為同意或駁回的請假單據)選單過濾條件:

['|','|', '&','|', ('shenqr.user_id.groups_id', '=', 60), ('shenqr.user_id.groups_id', '=', 61), ('state', '=', 'wait_prove'), '&', ('state','=','depmanager_proved'),('ti

odoo 12 域表示式(domain)

格式 欄位名 操作符 值 例 shenqr.user id uid 1 操作符 操作符說明 比較運算,等於,不等於,大於,大於等於,小於,小於等於 like 模糊匹配,通過 value 匹配 like 可以使用模式匹配,下劃線 匹配乙個字元,百分號 匹配零或者多個字元 ilike 類似like,但是...

odoo開發domain的使用

odoo開發中,domain的使用可以在view中,可以在model中,因此說說自己用到的一些地方。首先domain得使用方法就不說了,可以參考寫的還是挺詳細的,說說在view中的使用。1 view中欄位關聯的過濾 在view檢視中,字段之間的關聯使用,比如說在位址資訊中,有省 市 縣資訊,因此在選...

Odoo動態修改欄位domain

序言 時間是我們最寶貴的財富,珍惜手上的每個時分 經常遇到此需求 現有字段 a,b,當a改變時,b的過濾條件隨之改變.例項 在銷售訂單行中維護了產品 商欄位,希望改變產品之後,採購 商只顯示所選產品對應的 商。略 inherit sale.order.line api.onchange produc...