Python 如何将服务器操作代码从旧API移动到新API?

Python 如何将服务器操作代码从旧API移动到新API?,python,xml,python-2.7,odoo-8,odoo,Python,Xml,Python 2.7,Odoo 8,Odoo,我正在使用odoov8,我已经创建了一个服务器操作,它工作正常,但是为了管理它,我不得不在旧API中编写它,在尝试了很多次使用新API之后 这是我的代码,旧API中的代码,现在正在运行: Python def open_action_alt_picking_type_views(self, cr, uid, ids, context=None): res = { 'view_type': 'form', 'view_mode': 'kanban',

我正在使用odoov8,我已经创建了一个服务器操作,它工作正常,但是为了管理它,我不得不在旧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
@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(cr, uid, context.get('active_ids', []), context=context)</field>
</record>
<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>
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>
<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>

采摘类型
真的
ir.actions.server
代码
action=self.open\u action\u alt\u picking\u type\u views()
我尝试了使用
@api.multi
,没有修饰符,在XML
code
字段中的de方法调用之前添加一个
return
,等等


有人知道如何实现这一点吗?

我认为您需要在调用方法时指定模型,如下所示:

<field name="code">action = env['stock.picking.type'].open_action_alt_picking_type_views()</field>
action=env['stock.picking.type'].打开\u action\u alt\u picking\u type\u视图()

您能更具体地说明“不工作”的含义吗?它什么都不做,甚至没有给出错误。。。您单击菜单项调用服务器操作,但它不会打开任何视图。非常感谢@Lucas,这就是问题所在!我只编辑了模型调用,因为with
get
不起作用。