2013-09-25 72 views
7

我想問你是否可以請解釋Openerp域名過濾器的解剖結構。我必須使用它我的項目。 請解釋以下域名過濾器的說明。瞭解OpenERP域名過濾器?

['|',('order_id.user_id','=',user.id),('order_id.user_id','=',False)] 

我想知道的(order_id.user_id','=',user.id)的確切含義是什麼order_iduser_id,並user.id。他們是否參考任何表格。如果是的話,我怎麼知道哪一個...

基本上我想知道從下往上解釋符號,以便可以按照我的要求使用它。

回答

3

'|'是一個應用於下一個比較的OR。該(..., '=',FALSE)被轉換成IS NULL所以這個SQL將

WHERE order_id.user_id = x OR order_id.user_id is NULL 

默認爲AND這就是爲什麼你看不到( '&',( 'FIELD1', '=',1),( 'FIELD2', '=',2)無處不在。

注意,另一種有用的一個是( 'FIELD1', '!=',假),其被轉換到WHERE field1 IS NOT NULL

這裏沒有很多很棒的文檔,它們對於多個操作符來說相當棘手,因爲你必須通過逆向工作來處理元組,日在我只打開Postgres中的查詢日誌記錄,並使用試驗和錯誤觀察生成的查詢,直到我得到它的權利。

20

這個很簡單。

考慮以下字段(只有XML我已經在這裏給出Python中,你得管理)

<field name="a"/> 
<field name="b"/> 
<field name="c"/> 

單一條件

考慮編程一些簡單的條件

if a = 5 # where a is the variable and 5 is the value 

在開放式ERP域過濾器中,它會這樣寫:

[('a','=',5)] # where a should be a field in the model and 5 will be the value 

所以我們得到的語法是

('field_name', 'operator', value) 

現在讓我們嘗試到位靜態值5

[('a','=',b)] # where a and b should be the fields in the model 

的申請另一場在你上面所要注意的是第一個變量a用單引號括起來,而值b不是。要比較的變量將始終爲第一個,並將用單引號括起來,該值將只是字段名稱。但是如果你想「B」你已經做了以下

[('a','=','b')] # where only a is the field name and b is the value (field b's value will not be taken for comparison in this case) 

狀況和

在編程

if a = 5 and b = 10 

在打開ERP域濾波器的值進行比較變量

[('a','=',5),('b','=',10)] 

請注意,如果您沒有指定任何co在開始條件將被應用。如果您想更換靜態值,你可以簡單地除去5,給字段名(嚴格不含引號

[('a','=',c),('b','=',c)] 

狀況或

在編程

if a = 5 or b = 10 

在打開ERP域過濾器

['|',('a','=',5),('b','=',10)] 

請注意,,表示它是的條件。如果要替換字段,你可以簡單地除去5,給字段名(嚴格不含引號

多個條件

在編程

if a = 5 or (b != 10 and c = 12) 

在打開ERP域濾波

['|',('a','=',5),('&',('b','!=',10),('c','=',12))] 

此外來自Arya的210會對你有很大的幫助。乾杯!!

+0

嗨Vivek,請分享你的電子郵件ID。我會寄給你我的模塊 – user3153567

+0

嗨,你要發給我什麼模塊?無論如何[email protected]是我的電子郵件ID。 – Vivek

+0

我向您發送了需要修復域過濾器的模塊。謝謝 – user3153567