在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:测试操作
- 在Odoo中导航到销售模块。
- 打开任意销售订单或在列表视图中选择多个销售订单。
- 点击操作菜单(Action)。
- 您应该会看到新的操作项,标签为“Update Order Date”。
- 点击后,该操作会将所选记录的date_order字段更新为当天日期。
在操作菜单中使用服务器操作的优势
- 用户友好:无需技术知识即可执行操作,提高非技术用户的易用性。
- 节省时间:自动化重复任务,减少手动工作量。
- 灵活性高:可自定义以处理各种操作,如更新字段、触发工作流甚至调用外部API。
在Odoo的操作菜单中添加按钮是简化操作的强大方式。通过遵循上述步骤,您可以轻松创建针对业务需求的自定义操作。这不仅提高了生产力,还展示了Odoo框架的灵活性。