代码之家  ›  专栏  ›  技术社区  ›  forvas

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

  •  2
  • forvas  · 技术社区  · 7 年前

    我正在使用odoov8,我创建了一个服务器操作,它工作正常,但为了管理它,我不得不在旧API中编写它,在新API中尝试了很多次之后。

    这是我的密码 旧API ,现在正在工作:

    蟒蛇

    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>
    

    这是 新建API 不起作用:

    蟒蛇

    @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 ,没有装饰器,添加 return 在XML中调用de方法之前 code 字段等。

    有人知道如何做到这一点吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   forvas    7 年前

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

    <field name="code">action = env['stock.picking.type'].open_action_alt_picking_type_views()</field>