Oejia 技术栈
首页
应用市场
方案
OE学院
分享
关于
编辑器
登录
Odoo 开发中 wizard 向导页的使用方法
admin
on 2016-12-29
### 概述 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') ``` 其中几个字段都是用于状态记录的 #### 2. 定义动作方法 @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 #### 3. 定义form试图 ```xml <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 向导页的呈现载体 #### 3. 创建 act_window 模型对象指向到上面定义的模型 #### 4. 创建触发点 **方法一:从菜单出发** 1. 创建 act_window,模型对象指向到上面定义的模型 2. 创建入口菜单关联上面创建的act_window 3. 触发按钮可以放在指向该模型的任意试图里,如上面的form试图中的 ` name="update_module"` 的按钮,每个按钮都可以关联模型定义中的一个方法,形成触发关联 **方法二:从其他模型的下拉按钮触**发 创建一个模型的下拉act_window,示例如下 ```xml <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` 对象实现更高级的交互功能,具体用法我们将在后续文章中详细讲解
Information
Odoo 开发中 wizard 向导页的使用方法
http://www.oejia.net/article/d121fe1f58e7c84175f032f9ca1cf2b0
http://www.oejia.net/raw/d121fe1f58e7c84175f032f9ca1cf2b0
admin
on 2016-12-29
Category
Odoo
Related
2018-10-24 :
Odoo 12 账号相关的变化
2018-09-13 :
Odoo 小程序商城模块
2017-12-26 :
Odoo 前端开发可用的内置JS功能介绍
2016-12-16 :
Oejia_wx v0.4.0 发布,支持 Odoo10 的微信模块
2018-11-23 :
Odoo 菜单定制模块 Oejia_menu v0.2.0 发布!
2021-08-31 :
微信模块 Oejia_wx v0.6.5 发布,更灵活强大的自定义回复功能实现各类自助交互查询业务
2021-02-18 :
Odoo 字段定义详解
2019-03-08 :
Odoo 菜单美化模块 oejia_menu 常见问题处理
2016-05-14 :
常见 HTTP 状态码解析
2021-02-18 :
Odoo Website前台网站相关
官方订阅号
关注订阅实时了解我们更多分享
分类
(20)
Django (3)
DjangoX (13)
JS (2)
Nginx (1)
Odoo (134)
Python (1)
YouMd (3)
公告说明 (2)
前端 (2)
后端HTTP (7)
异常处理 (1)
桌面UI (1)
移动开发 (4)
About This Entry
Odoo 开发前台页面和模板引擎的使用
DjangoX Ajax表单交互之“部分更新”patch式
About This Blog
main index
to find recently
archives
to find all
标签
微信模块发布记录
微信模块
小程序商城
Web
Http
客服系统
审批OA
HTML5
OE商城
Markdown
DjangoX
解析
oeshop
PyQT
服系统
YouPBX
Excel
示例
md
markdown
Python
最近发布
OSError [Errno 5] Input/output error 异常处理
Odoo context 的常见使用示例
Odoo 符合国人菜单导航习惯的后台主题,支持最新的Odoo17、16等版本,支持企业版!
Odoo 官方应用市场开启 Odoo17 应用的发布!增加了行业应用专栏
Odoo商城模块 Oejia_weshop v1.2 发布,多商户、分销增强,增加商家端!
处理 Error Failed to download metadata for repo ‘appstream‘ Cannot prepare internal mirrorlist
Odoo 16 关键变化 change the term "acquirer" to "provider"
企业微信错误码 81013 的排查与处理
微信模块 Oejia_wx v0.6.7 发布,支持 Odoo16 及新的Websocket消息模式
Friend Links
Oejia技术梦博客分享
YouMd,爱上MarkDown
Mole轻量级wsgi架子