可以参考采购单的右侧按钮的写法。
简单讲,就是先通过xmlid获取到action_id,继而获取到action,修改action的相关信息,然后将结果返回,即可以实现跳转。
mod_obj = self.pool.get('ir.model.data')
dummy,action_id = tuple(mod_obj.get_object_reference(cr,uid,'purchase','purchase_rfq'))
action = self.pool.get('ir.actions.act_window').read(cr,uid,action_id,context=context)
action['context']={}
request = self.browse(cr,uid,ids[],context=context)
if request.purchase_id:
action['domain']="[('id','=',"+str(request.purchase_id.id)+")]"
action['views']=[(False,"form")]
action['res_id']=request.purchase_id.id
return action
注意,返回的action是一个Dictionary的结果,而不是action对象,否则将不能跳转。
action['views']=[(False,"form")] views是action的一个属性,值为类似[(view_id,view_mode)]的格式,view_id为False,取默认的view值。