Выберите запись с самым высоким кол-во из поиска домена - PullRequest
0 голосов
/ 24 августа 2018

Этот поиск по домену возвращает мне 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)

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

Другим решением является сортировка результата уже на search():

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

Параметр order будет использоваться как ORDER BY <parameter content> в запросе, который Odoo создает для поиска. По умолчанию Odoo использует атрибут модели _order или как запасной вариант id (ORDER BY id). Вот почему параметр не обязателен, но полезен!

0 голосов
/ 24 августа 2018

Мы можем отсортировать запись по количеству, и если мы используем reverse=True, первая запись всегда будет с наибольшим количеством.

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

sup_inf[0] всегда будет запись с наибольшим количеством

...