目前,odoo的窗口只能执行窗口的跳转功能,如果我们需要在跳转的同时执行某些操作,则需要同时使用服务器动作。
首先我们来了解以下用法:
ir.actions.server的code字段可以赋值为一小段python代码,当执行该服务器动作时也会同时执行该段python代码,而如果这段python代码最后返回了一个窗口动作,则执行完服务器动作后也会执行该窗口动作。
例子如下:
<record id="server_logistics_handover" model="ir.actions.server">
<field name="name">混合动作</field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="model_logistics_handover"/>
<field name="state">code</field>
<field name="code">action=env['res.company'].browse(context.get('active_ids')).func_xxx()</field>
</record>
如上,该服务器动作会执行先res.company模型的func_xxx()函数,然后再执行func_xxx()返回的action(如窗口跳转)。