odoo actions的target

本文详细介绍了Odoo中三种主要Action的使用方法:窗口Action、链接Action及客户端Action,并解释了它们各自的重要字段及其作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

窗口Action(ir.actions.act_window )

字段列表:
1.res_model – 需要在view里显示数据的model
2.views – 一个(view_id, view_type) 列表,view_type代表视图类型如:form,tree,gragh…,view_id是可选的数据库id或False,如果没有指定id,客户端会自动用fields_view_get()获取相应类型的默认视图,type参数列表的第一个会被默认用来展示
3.res_id (可选) – 当默认的视图类型是form时,可用于指定加载的数据
4.search_view_id (可选) – (id, name),id是储存在数据库的搜索视图,默认会读取model的默认搜索视图
5.target (可选) – 定义视图是 在当前视图上打开(current)、使用全屏模式(fullscreen)、使用弹出框(new)、可使用main代替current来清除面包屑导航
target:

target描述
new弹出框
current当前视图上打开(有导航)
main当前视图上打开,清除了面包屑导航
fullscreen全屏模式

6.context (可选) – 额外的需要传给视图的环境数据
7.domain (可选) – 自动添加到视图搜索中的查询
8.limit (可选) – 在客户端显示的数据量,默认80
9.auto_search(可选) – 搜索是否在加载默认视图后立即执行,默认True

链接Action(ir.actions.act_url)

可以通过odoo的链接打开一个网站页面,可通过两个字段来自定义:

url – 当激活action时所打开的链接
target – new:在新窗口打开,self:替换当前页面内容,默认new

{
    "type": "ir.actions.act_url",
    "url": "http://odoo.com",
    "target": "self",
}

客户端Actions (ir.actions.client)

触发一个完全在客户端实现的action

tag – action在客户端的标识符,一般是一个专用的字符串
params (可选) – 用来传给客户端的python数据字典格式数据
target (可选) – current:当前内容区打开action,fullscreen:以全屏模式打开,new:以弹出框打开
#例:打开一个pos界面,不需要服务端知道它是如何运行的

{
    "type": "ir.actions.client",
    "tag": "pos.ui"
}

转:https://www.jianshu.com/p/47fdcf274581

### 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文件预先声明好固定流程路径还是依靠实时计算得出灵活变化的结果集,都可以轻松达成开启目标实体集合浏览界面的目的。开发者只需按照实际需求调整相关字段值即可满足不同应用场景下的要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值