跳至内容

在Odoo 18的操作菜单中添加按钮

在Odoo 18的操作菜单中添加按钮

Odoo 18为开发人员提供了广泛的灵活性来自定义和增强用户体验,它允许无缝集成满足独特业务需求的新功能。其中一项自定义操作是在模型表单视图的操作菜单中添加按钮,使用户能够高效执行特定操作。在本文中,我们将逐步介绍创建操作菜单项的过程,该菜单项将为选定的销售订单更新订单日期,展示Odoo可扩展框架的简洁性和强大功能。

步骤1:继承模型

要对记录执行操作,我们需要继承销售订单模型并定义更新订单日期的方法。

from odoo import fields, models

class SaleOrder(models.Model):
    _inherit = 'sale.order'
    
    def action_update_order_date(self):
        for rec in self.browse(self.env.context['active_ids']):
            rec.write({'date_order': fields.Date.today()})
  • action_update_order_date方法:循环遍历所选记录(通过上下文传递的active_ids),并将date_order字段更新为当前日期。
  • browse方法:用于根据记录ID获取记录。

步骤2:定义服务器操作

接下来,我们需要创建一个服务器操作来触发action_update_order_date方法,使用XML实现:

<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
    <record id="action_update_order_date" model="ir.actions.server">
        <field name="name">Update Order Date</field>
        <field name="model_id" ref="model_sale_order"/>
        <field name="binding_model_id" ref="sale.model_sale_order"/>
        <field name="binding_view_types">form</field>
        <field name="state">code</field>
        <field name="code">model.action_update_order_date()</field>
    </record>
</odoo>
  • ir.actions.server:这是Odoo中用于定义服务器操作的模型。
  • model_id:指定此操作所针对的模型(在本例中为’sale.order’)。
  • binding_model_id:将服务器操作链接到指定模型。
  • binding_view_types:指定此操作应显示的位置(例如在表单视图中)。
  • state:定义操作类型,此处使用code来执行Python代码。
  • code:执行之前定义的方法(action_update_order_date)。

步骤3:测试操作

  1. 在Odoo中导航到销售模块。
  2. 打开任意销售订单或在列表视图中选择多个销售订单。
  3. 点击操作菜单(Action)。
  4. 您应该会看到新的操作项,标签为“Update Order Date”。
  5. 点击后,该操作会将所选记录的date_order字段更新为当天日期。

在操作菜单中使用服务器操作的优势

  • 用户友好:无需技术知识即可执行操作,提高非技术用户的易用性。
  • 节省时间:自动化重复任务,减少手动工作量。
  • 灵活性高:可自定义以处理各种操作,如更新字段、触发工作流甚至调用外部API。

在Odoo的操作菜单中添加按钮是简化操作的强大方式。通过遵循上述步骤,您可以轻松创建针对业务需求的自定义操作。这不仅提高了生产力,还展示了Odoo框架的灵活性。

在Odoo 18的操作菜单中添加按钮
中国 Odoo, 苏州远鼎 2025年6月13日
标签
存档