I answer my own question: This is no possible.
I manage to solve it in single on_change method, merging two dictionaries with values from different tables:
def on_change_cm_id(self,cr, uid, ids,cm_id,context=None):
context=context or {}
application_data_product_template = []
attributes_product_template = []
value = {}
dict = {}
if ids:
application_ids = self.pool.get('product.template.application.data.line').search(cr, uid,[('product_template_id','in',ids)])
self.pool.get('product.template.application.data.line').unlink(cr, uid, application_ids)
old_note_ids = self.pool.get('product.attribute.line').search(cr, uid,[('product_tmpl_id','in',ids)])
self.pool.get('product.attribute.line').unlink(cr, uid, old_note_ids)
application_cm_ids = []
attribute_cm_ids = []
attribute_cm_ids = self.pool.get('attribute.comun.denominador.line').search(cr, uid, [('comun_denominador_id', '=', cm_id)])
application_cm_ids = self.pool.get('cm.application.data.line').search(cr, uid, [('comun_denominador_id', '=', cm_id)])
for application_id in self.pool.get('cm.application.data.line').read(cr, uid, application_cm_ids, ['brand', 'date_beg', 'dateend', 'model']):
application_data_product_template.append((0,0,{'brand':application_id['brand'][0],'date_beg':application_id['date_beg'], 'dateend':application_id['dateend'], 'model':application_id['model'][0]}))
dict.update(application_data_product_template_ids=application_data_product_template)
for attribute_id in self.pool.get('attribute.comun.denominador.line').read(cr, uid, attribute_cm_ids, ['attribute_comun_denominador_id', 'value_comun_denominador_ids']):
attributes_product_template.append((0,0,{'value_ids':attribute_id['value_comun_denominador_ids'],'attribute_id':attribute_id['attribute_comun_denominador_id'][0]}))
value.update(attribute_line_ids=attributes_product_template)
value.update(dict)#in this part, dictionaries are merged!!
return {'value':value}
Hope this is helpful for someone!!