📜  将参数传递给 odoo 向导 - Python (1)

📅  最后修改于: 2023-12-03 15:09:34.758000             🧑  作者: Mango

将参数传递给 Odoo 向导 - Python

简介

Odoo 向导(Wizard)是在用户进行特定任务时弹出的对话框,其中包含一些必填和可选字段。通过向导,用户可以轻松地填写和提交表单。本文将介绍如何在 Python 中调用 Odoo 向导并将参数传递给它。

步骤

以下是将参数传递给 Odoo 向导的步骤:

步骤 1:定义向导模型

第一步是定义一个向导模型。通过继承 models.TransientModel 类并实现相应的字段和方法,定义一个新的向导模型。例如:

from odoo import models, fields

class MyWizard(models.TransientModel):
    _name = 'my.wizard'

    field1 = fields.Char(string='Field 1')
    field2 = fields.Char(string='Field 2')

    def action_submit(self):
        # Implementation of submit action

在此示例中,我们定义了一个名为“my.wizard”的新向导模型,并添加了两个字符串类型的字段 field1field2。此模型还包含一个名为 action_submit 的方法,该方法将在用户点击“提交”按钮时调用。

步骤 2:创建向导实例

在调用 Odoo 向导之前,首先必须创建一个向导实例。向导实例是该模型的一个具体对象,包含即将向用户显示的数据。您可以使用 create 方法来创建一个向导实例。例如:

wizard = self.env['my.wizard'].create({'field1': 'Value 1', 'field2': 'Value 2'})

在此示例中,我们创建了一个名为 wizard 的新向导实例,并设置了 field1field2 字段的值为 'Value 1''Value 2'

步骤 3:调用向导

一旦创建了向导实例,就可以使用 odoo.addons.base.models.ir_actions_act_window.FormBuilder 类来打开向导。您可以设置以下参数:

  • model: 指定要使用的向导模型的名称。
  • id: 模型的 ID。如果不是在 Odoo 中定义的向导,则可将其设置为 False
  • context: 设置向导的默认上下文。

例如:

return {
    'type': 'ir.actions.act_window',
    'name': 'My Wizard',
    'res_model': 'my.wizard',
    'view_mode': 'form',
    'target': 'new',
    'res_id': wizard.id,
}

在此示例中,我们设置了一个字典以打开 my.wizard 模型的向导,并将 wizard.id 作为 res_id 参数传递。此向导将在新窗口中打开。

步骤 4:接收向导提交

最后,您必须在向导模型中实现 action_submit 方法,以处理向导提交的数据。例如:

def action_submit(self):
    data = {
        'field1': self.field1,
        'field2': self.field2,
    }
    # Do something with data
    return {'type': 'ir.actions.act_window_close'}

在此示例中,我们定义了 action_submit 方法,该方法从该模型的字段中提取数据,并将其存储在名为 data 的字典中。最后,我们在方法末尾使用 ir.actions.act_window_close 来关闭向导。

结论

通过按照以上步骤,您可以轻松地将参数传递给 Odoo 向导,并使用 Python 处理提交的数据。Odoo 在创建向导时使用强大的模型-视图-控制器(MVC)架构,使得您可以轻松地创建自定义的向导并集成到自己的 Odoo 应用程序中。