如何将服务器操作代码从旧的 API 移动到新的 API?
How to move server action code from old API to new API?
我正在使用 Odoo v8,我创建了一个工作正常的服务器操作,但为了管理它我不得不在旧的 API 中编写它,经过多次尝试在新 API.
这是我的代码,旧 API 中的代码,现在可用:
Python
def open_action_alt_picking_type_views(self, cr, uid, ids, context=None):
res = {
'view_type': 'form',
'view_mode': 'kanban',
'res_model': 'stock.picking.type',
'type': 'ir.actions.act_window',
'target': 'current',
}
return res
XML
<record id="server_action_alt_picking_type_views" model="ir.actions.server">
<field name="name">Picking types</field>
<field name="condition">True</field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="model_stock_picking_type"/>
<field name="state">code</field>
<field name="code">action = self.open_action_alt_picking_type_views(cr, uid, context.get('active_ids', []), context=context)</field>
</record>
这是 new API 中的一项尝试,但没有奏效:
Python
@api.model
def open_action_alt_picking_type_views(self):
res = {
'view_type': 'form',
'view_mode': 'kanban',
'res_model': 'stock.picking.type',
'type': 'ir.actions.act_window',
'target': 'current',
}
return res
XML
<record id="server_action_alt_picking_type_views" model="ir.actions.server">
<field name="name">Picking types</field>
<field name="condition">True</field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="model_stock_picking_type"/>
<field name="state">code</field>
<field name="code">action = self.open_action_alt_picking_type_views()</field>
</record>
我尝试使用 @api.multi
,没有装饰器,在 XML code
字段等方法调用之前添加 return
有人知道如何实现吗?
我相信您需要在调用方法时指定模型,如下所示:
<field name="code">action = env['stock.picking.type'].open_action_alt_picking_type_views()</field>
我正在使用 Odoo v8,我创建了一个工作正常的服务器操作,但为了管理它我不得不在旧的 API 中编写它,经过多次尝试在新 API.
这是我的代码,旧 API 中的代码,现在可用:
Python
def open_action_alt_picking_type_views(self, cr, uid, ids, context=None):
res = {
'view_type': 'form',
'view_mode': 'kanban',
'res_model': 'stock.picking.type',
'type': 'ir.actions.act_window',
'target': 'current',
}
return res
XML
<record id="server_action_alt_picking_type_views" model="ir.actions.server">
<field name="name">Picking types</field>
<field name="condition">True</field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="model_stock_picking_type"/>
<field name="state">code</field>
<field name="code">action = self.open_action_alt_picking_type_views(cr, uid, context.get('active_ids', []), context=context)</field>
</record>
这是 new API 中的一项尝试,但没有奏效:
Python
@api.model
def open_action_alt_picking_type_views(self):
res = {
'view_type': 'form',
'view_mode': 'kanban',
'res_model': 'stock.picking.type',
'type': 'ir.actions.act_window',
'target': 'current',
}
return res
XML
<record id="server_action_alt_picking_type_views" model="ir.actions.server">
<field name="name">Picking types</field>
<field name="condition">True</field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="model_stock_picking_type"/>
<field name="state">code</field>
<field name="code">action = self.open_action_alt_picking_type_views()</field>
</record>
我尝试使用 @api.multi
,没有装饰器,在 XML code
字段等方法调用之前添加 return
有人知道如何实现吗?
我相信您需要在调用方法时指定模型,如下所示:
<field name="code">action = env['stock.picking.type'].open_action_alt_picking_type_views()</field>