2017-08-07 73 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)