overriding the onchange_product_id() will solve my problem, and I'm able to handle the new selected product and update another field in tree view:
class purchase_ordr_line(models.Model):
_inherit = "purchase.order.line"
@api.multi
def onchange_product_id(self, pricelist_id, product_id, qty, uom_id,
partner_id, date_order=False, fiscal_position_id=False, date_planned=False,
name=False, price_unit=False, state='draft'):
dic_res = super(purchase_ordr_line, self).onchange_product_id(pricelist_id, product_id, qty, uom_id,partner_id, date_order=False, fiscal_position_id=False, date_planned=False,
name=False, price_unit=False, state='draft')
#Following the custom code:
dic_value = dic_res['value']
dic_value['new_field_to_update'] = new_value
return dic_res