odoo隐藏form表单动作中的菜单

### Odoo开发中实现打开窗口动作的方法 在Odoo开发中,`ir.actions.act_window` 是最常用的一种动作类型,用于打开模型的不同视图。通过定义 `ir.actions.act_window` 动作并将其绑定到菜单项或其他触发器(如按钮),可以实现打开窗口的功能。 以下是具体实现方法: #### 1. 使用 XML 定义窗口动作 可以通过 `<record>` 标签来定义一个窗口动作,并指定其属性。这些属性决定了要打开的模型、视图模式以及其他行为参数。 ```xml <record id="open_my_model_form" model="ir.actions.act_window"> <field name="name">My Model Form</field> <field name="res_model">my.module.model</field> <!-- 要展示的数据模型 --> <field name="view_mode">form</field> <!-- 视图模式:这里只打开了表单视图 --> <field name="target">new</field> <!-- 可选:在新对话框中打开 --> </record> ``` 以上代码片段创建了一个名为 `My Model Form` 的窗口动作[^2],它会在点击时打开 `my.module.model` 模型的一个表单视图。如果设置了 `target=new` 属性,则该窗体会以弹出形式呈现。 --- #### 2. 将动作关联至菜单项 为了使用户能够访问这个动作,需将它链接到某个菜单条目下: ```xml <menuitem id="menu_open_my_model" name="Open My Model" action="open_my_model_form" parent="base.menu_custom"/> ``` 此处,`action` 属性指向之前定义好的动作 ID (`open_my_model_form`),而 `parent` 则指定了父级菜单的位置[^3]。 --- #### 3. 动态生成动作 (Python 方法) 除了静态配置外,还可以利用 Python 编写动态逻辑返回相应的动作字典对象。例如,在控制器或者按钮回调函数内部执行如下操作: ```python def open_record_in_new_tab(self): return { 'type': 'ir.actions.act_window', 'name': 'Product Details', # 窗口标题 'res_model': 'product.product', # 对应的模型名称 'view_mode': 'form', # 显示哪种视图(树形/列表...) 'res_id': self.id, # 如果需要编辑某一条记录则传入ID 'target': 'new' # 是否作为模态框显示(new)/当前页(current) } ``` 当调用此方法时,将会依据所给定条件加载对应的产品详情页面于新的浮层之中[^5]。 --- #### 4. 支持多种视图类型 有时可能希望同一个动作支持多个视图切换功能,比如表格视图(tree) 和 表单视图(form),此时可以在 `views` 字段内列举所有可用选项: ```json { "type": "ir.actions.act_window", "name": "Products List", "res_model": "product.template", "views": [ [False, "tree"], /* 默认采用系统内置的最佳匹配 */ ["some_custom_view_id", "form"] /* 自定义视图优先级更高 */ ], } ``` 注意这里的第一个子数组 `[False,"tree"]` 中的第一个元素为空意味着让框架自行决定最佳候选者;第二个例子则是明确指出应该选用哪个特定自定义设计过的界面布局[^4]。 --- ### 总结 综上所述,无论是借助XML文件预先声明好固定流程路径还是依靠实时计算得出灵活变化的结果集,都可以轻松达成开启目标实体集合浏览界面的目的。开发者只需按照实际需求调整相关字段值即可满足不同应用场景下的要求。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东木月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值