2017-08-07 74 views
1

我正在嘗試使用Odoo ORM基於相關字段的值進行搜索。相關領域通過2個many2one關係訪問:在Odoo搜索域中使用many2one字段

info = env['product.supplierinfo'].search([ \ 
     ('product_tmpl_id.product_variant_id.id', '=', line.product_id.id), \ 
     ('product_tmpl_id.product_variant_id.active', '=', True), \ 
     ('x_provides_stock', '=', True), \ 
     ('x_available_qty', '>', 0)]) 

正如你所看到的,第一個元組2在域中通過product_tmpl_id.product_variant_id搜索領域。然而,由於我得到的結果比我應該多得多,所以這個域似乎並不奏效。

如果我不是在查詢後加上這兩個約束過濾器的方法,我得到預期的結果:

info = env['product.supplierinfo'].search([ \ 
     ('x_available_qty', '>', 0), \ 
     ('x_provides_stock', '=', True)]) \ 
     .filtered(lambda i: i.product_tmpl_id.product_variant_id == line.product_id and i.product_tmpl_id.product_variant_id.active) 

有什麼我做錯了與第一種方法?該文檔說,您可以通過域中的many2one字段使用關係遍歷。這是僅限於一個many2one領域?

回答

0

這是我有點類似的代碼。

Ex。

@api.model 
    def _getUserId(self): 
     return [('personel_ids', '=', self.env['nstdamas.employee'].search([('emp_rusers_id','=',self._uid)]).id)] 


asset_ids = fields.Many2one('nstda.mst.asset','Asset', domain=_getUserId, required=True) 
相關問題