2014-04-08 29 views
0

這裏是我一直試圖做的事:OpenERP的域:CHAR比較

<field name="of_num" domain="[('etat','=','Terminé')]"/> 

其中「of_num」是many2one場和政變'是char類型的功能欄。

但它似乎不起作用。我仍然在我的下拉列表中獲取所有記錄。

我也嘗試了一些沒有unicode字符但仍然相同的其他文本。

我也嘗試使用「ilike」運算符,並嘗試將域放入Python代碼中,但沒有機會。

編輯

我已經想通了我的問題的根源: 場「政變」的計算,但使用「商店=假」,因爲我'不保存。

它與store = True一起工作。 不過,我不想保存它,因爲每次加載視圖時都需要計算我的值。

任何人都可以請幫助我做到這一點,而不必存儲我的價值?謝謝

回答

0

我發現要解決我的問題,唯一的解決辦法是使用存儲和更新一次我的函數計算(功能領域「政變」)時布爾字段。

0

使用fnct_search。對於功能性字段,有一個名爲「fnct_search」的參數,它返回一個搜索域條件。 例如

_columns = { 
'a':fields.float('A'), 
'b':fields.float('B'), 
'total_fn': fields.function(_total, fnct_search=_total_search, string='Total'), 
} 
def _total(self, cr, uid, ids, name, arg, context=None): 
    res = {} 
    for obj in self.browse(cr, uid, ids, context): 
     res[obj.id] = obj.a + obj.b 
    return res 

def _total_search(self, cursor, user, obj, name, args, domain=None, context=None): 
    ids = set() 
    for cond in args: 
     amount = cond[2] 
     cr.execute("select id from your_table having sum(a,b) %s %%s" % (cond[1]),(amount,)) 
     res_ids = set(id[0] for id in cr.fetchall()) 
     ids = ids and (ids & res_ids) or res_ids 
    if ids: 
     return [('id', 'in', tuple(ids))] 
    return [('id', '=', '0')] 

這裏_total返回值,顯示爲外地total_fn,fnct_search返回的元組需要的資源列表進行搜索。所以每當我們給參數[( 'total_fn', '=',1500)]