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

概述

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 对象实现更高级的交互功能,具体用法我们将在后续文章中详细讲解

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值