I want to use name_search in product to get product by search the lot name which in stock.production.lot
relation stock_quant_ids,product_id,lot_id
class ProductProduct(models.Model):
_inherit = 'product.product'
@api.model
def name_search(self, name='', args=None, operator='ilike', limit=100):
args = args or []
print('arg ',args)
recs = self.search([('???', operator, name)] args, limit=limit) #stock_quant_ids.lot_id.name
print('recs ', recs)
if not recs.ids:
return super(ProductProduct, self).name_search(name=name, args=args,
operator=operator,
limit=limit)
return recs.name_get()
Try this:
@api.model
def name_search(self, name='', args=None, operator='ilike', limit=100):
""" search for product using the Lot number """
args = args or []
recs = None
# only perform search by when the name is passed
if name:
# don't use limit here
recs = self.env['stock.production.lot'].search([('name', operator, name)])
if recs:
# handle extra filter that was passed by the domain attribute in the XML
args = expression.AND([args, [('id', 'in', recs.mapped('product_id').ids)]])
return self.search(args, limit=limit).name_get()
# no Lot was founded may be the user meant to search by product name
return super(ProductProduct, self).name_search(name=name,
args=args,
operator=operator,
limit=limit)