从域搜索中选择数量最多的记录
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
)。这就是参数不是必需但有用的原因!
此域搜索返回 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
)。这就是参数不是必需但有用的原因!