当前位置: 首页 > 工具软件 > Wizard > 使用案例 >

Odoo----wizard 向导页的使用方法

林烨华
2023-12-01

概述

Odoo 中有不少地方涉及对话向导页面模式,这种功能页很方便灵活,可以随意产生自已定义的表单/动作交互操作流,下面我们就举例讲解具体使用方法

方法

以odoo中“更新模块列表”这个操作为例

  1. 定义模型
class BaseModuleUpdate(models.TransientModel):
    _name = "base.module.update"
    _description = "Update Module"
    updated = fields.Integer('Number of modules updated', readonly=True)
    added = fields.Integer('Number of modules added', readonly=True)
    state = fields.Selection([('init', 'init'), ('done', 'done')], 'Status', readonly=True, default='init')

其中几个字段都是用于状态记录的

  1. 定义动作方法
@api.multi
def update_module(self):
    for this in self:
        updated, added = self.env['ir.module.module'].update_list()
        this.write({'updated': updated, 'added': added, 'state': 'done'})
    return False
  1. 定义form试图
<form string="Update Module List">
                    <field name="state" invisible="1"/>
                    <separator string="Module Update Result"/>
                    <group states="init">
                        <label string="Click on Update below to start the process..."/>
                    </group>
                    <group states="done">
                        <field name="updated"/>
                        <field name="added"/>
                    </group>
                    <footer>
                        <div states="init">
                            <button name="update_module" string="Update" type="object" class="btn-primary"/>
                            <button special="cancel" string="Cancel" class="btn-default"/>
                        </div>
                        <div states="done">
                            <button name="action_module_open" string="Open Apps" type="object" class="btn-primary"/>
                            <button special="cancel" string="Close" class="btn-default"/>
                        </div>
                    </footer>
</form>

form试图是wizard 向导页的呈现载体

  1. 创建 act_window
    模型对象指向到上面定义的模型

  2. 创建触发点
    方法一:从菜单出发

     1.创建 act_window,模型对象指向到上面定义的模型
     2.创建入口菜单关联上面创建的act_window
     3.触发按钮可以放在指向该模型的任意试图里,如上面的form试图中的 name="update_module" 		的按钮,每个按钮都可以关联模型定义中的一个方法,形成触发关联
    

方法二:从其他模型的下拉按钮触发

创建一个模型的下拉act_window,示例如下

<act_window 
    context="{'model_id': active_id}" 
    id="act_menu_creates" 
    name="创建菜单" 
    res_model="wizard.ir.models.menu.create"
    src_model="ir.model"
    key2="client_action_multi"
    target="new"
    view_mode="form"/>

其中src_model即为要挂载的目标模型,res_model为wizard本体模型,context的值是关键,限定当前动作只影响所选的行

扩展

上面说到了模型中定义的方法,其实他还可以关联一个 ir.actions.server 对象实现更高级的交互功能,具体用法我们将在后续文章中详细讲解

 类似资料: