从域搜索中选择数量最多的记录

Chose record with highest qty from domain search

此域搜索返回 2 条记录。我想过滤数量较多的记录。那么我可以在域 ('qty','<=',line.quantity),('qty','>',line.quantity) 中做这样的事情吗? 只需要 suplier_inf 给我 1 个最高数量的记录。

  for line in invocie.invoice_line_ids:
                domain = [('product_tmpl_id', '=', line.product_id.product_tmpl_id.id),
                          ('name', '=', line.partner_id.id)]
                suplier_inf = self.env['product.supplierinfo'].search(domain)

我们可以按数量对记录进行排序,如果我们使用 reverse=True 第一条记录总是数量最多。

sup_inf = suplier_inf.sorted(key=lambda rec: rec.qty, reverse=True)

sup_inf[0] 总是以最高数量记录

另一个解决方案是对 search() 上的结果进行排序:

suplier_inf = self.env['product.supplierinfo'].search(domain, order="qty desc")

参数 order 将用作 Odoo 为搜索创建的查询中的 ORDER BY <parameter content>。默认情况下,Odoo 使用模型 _order 属性或作为后备 id (ORDER BY id)。这就是参数不是必需但有用的原因!