usecase scnario.
i want user to pick and service (internal or subcontract) then each service has couple of vendors, i wanted to show in next dropdown list to pickup. (rather than showing all contacts).
code example below, each time, slightly different error
mode = fields.Selection([('internal', 'Internal'),('subcontract', 'Subcontract')],string='Mode', default='internal')
shortlisted_contacts=fields.Selection([], string='Shortlisted Contacts')
@api.onchange('mode')
    def update_responsible(self):
        for record in self:
            print ("Running a function on mode change")
            matching_string = record.display_name.split(' ')[1].lower()
            print ("MATCHING STRING:",matching_string)
            service_products = self.env['product.product'].search([('type', '=', 'service'),('name','ilike',matching_string)])
            print ("TOTAL SERVICES:",len(service_products))
            if service_products:
                vendor_ids = service_products.mapped('seller_ids.name.id')
                print ("TOTAL VENDORS:",len(vendor_ids))
                if len(vendor_ids)>0:
                    # print all vendor names
                    vendor_records = self.env['res.partner'].browse(vendor_ids)
                    vendor_names = vendor_records.mapped('name')
                    print ("VENDOR NAMES:",vendor_names)
                    record.partner_id = vendor_records[0].id
                    # contacts_list = [(str(contact.id), contact.name) for contact in vendor_records]
                    # record.shortlisted_contacts = contacts_list
                    # record.shortlisted_contacts = contacts_list[0][0] if contacts_list else False
                    contacts_list = [contact.name for contact in vendor_records]
                    # contacts_string = ','.join([f"('{id}', '{name}')" for id, name in contacts_list])
                    # record.shortlisted_contacts = contacts_string
                    # contacts_string = ','.join([f"('{i+1}', '{name}')" for i, name in enumerate(contacts_list)])
                    # record.shortlisted_contacts = contacts_string
                    contacts_list = [(str(i+1), name) for i, name in enumerate(vendor_names)]
                    record.shortlisted_contacts = contacts_list
                else:
                    # raise validation error about no vendors found in service product
                    raise UserError("No vendors found in service product.")
            else:
                # raise validation error about no service product found
                raise UserError("No service product found for this checklist item.")
total error types (last few attempts) 
ValueError: Wrong value for mrp.custom.checklist.line.shortlisted_contacts: 'Contractor Tempering,Contractor A'
Wrong value for mrp.custom.checklist.line.shortlisted_contacts: [('20', 'Contractor Tempering'), ('10', 'Contractor A')]
ValueError: too many values to unpack (expected 2)
ValueError: Wrong value for mrp.custom.checklist.line.shortlisted_contacts: "('1', 'Contractor Tempering'),('2', 'Contractor A')"
