操作定义系统响应用户操作的行为:登录,操作按钮,发票选择,......
动作可以存储在数据库中,或者作为字典直接返回到例如数据库中。按钮方法。 所有操作共享两个必需属性:
type
- 当前操作的类别,确定可以使用哪些字段以及如何解释操作
name
- 用户可读的简短操作描述,可能会显示在客户端的界面中
客户可以获得4种形式的行动:
窗口操作(ir.actions.act_window
)
最常见的操作类型,用于通过视图显示模型的可视化:窗口操作为模型定义一组视图类型(可能还有特定视图)(可能还有模型的特定记录) 。
它的领域是:
res_model
- 模型来呈现视图
views
(view_id,view_type)
对的列表。 每对的第二个元素是视图的类别(树,形式,图形,......),第一个是可选的数据库ID(或False
)。 如果未提供id,则客户端应获取所请求模型的指定类型的默认视图(这由fields_view_get()
自动完成。 列表的第一种类型是默认视图类型,默认情况下将在执行操作时打开。 每个视图类型在列表中最多只能出现一次res_id
(optional)- 如果默认视图为
form
,则指定要加载的记录(否则应创建新记录) search_view_id
(optional)(id,name)
pair,id
是要为操作加载的特定搜索视图的数据库标识符。 默认为获取模型的默认搜索视图target
(optional)- 是否应在主要内容区域(
当前
),全屏模式(全屏
)或对话框/弹出窗口中打开视图(new
)。 使用main
代替current
清除面包屑导航。 默认为当前
。 context
(optional)- 要传递给视图的其他上下文数据
domain
(optional)- 过滤域以隐式添加到所有视图搜索查询
limit
(optional)- 默认情况下列表中显示的记录数。 Web客户端中默认为80
auto_search
(optional)- 是否应在加载默认视图后立即执行搜索。 Defaults to
True
例如,要使用列表和表单视图打开客户(具有customer
标志集的伙伴):
{
"type": "ir.actions.act_window",
"res_model": "res.partner",
"views": [[False, "tree"], [False, "form"]],
"domain": [["customer", "=", true]],
}
或者在新对话框中打开特定产品的表单视图(单独获取):
{
"type": "ir.actions.act_window",
"res_model": "product.product",
"views": [[False, "form"]],
"res_id": a_product_id,
"target": "new",
}
数据库内窗口操作有几个不同的字段,客户端应忽略这些字段,主要用于组成视图
列表:
view_mode
- 以逗号分隔的视图类型列表作为字符串。 所有这些类型都将出现在生成的
视图
列表中(至少有一个False
view_id) view_ids
- M2M 1查看对象,定义
视图的初始内容
view_id
- 特定视图添加到
视图
列表,以防其类型是view_mode
列表的一部分,并且尚未由view_ids
中的一个视图填充
这些主要用于从数据文件定义操作时:
<record model="ir.actions.act_window" id="test_action">
<field name="name">A Test Action</field>
<field name="res_model">some.model</field>
<field name="view_mode">graph</field>
<field name="view_id" ref="my_specific_view"/>
</record>
将使用“my_specific_view”视图,即使这不是模型的默认视图。
视图
序列的服务器端组合如下:
- 从
view_ids
获取每个(id,type)
(按sequence
排序) - 如果定义
view_id
并且其类型尚未填充,则追加其(id,type)
- 对于
view_mode
中的每个未填充类型,追加(False,type)
URL操作(ir.actions.act_url
)
允许通过Odoo操作打开URL(网站/网页)。 可以通过两个字段进行定制:
url
- 激活操作时打开的地址
target
- 如果
new
,则在新窗口/页面中打开地址,如果self
,则用页面替换当前内容。 默认为new
{
"type": "ir.actions.act_url",
"url": "http://odoo.com",
"target": "self",
}
将用Odoo主页替换当前内容部分。
服务器操作(ir.actions.server
)
允许从任何有效的操作位置触发复杂的服务器代码。 只有两个字段与客户相关:
id
- 要运行的服务器操作的数据库内标识符
context
(optional)- 运行服务器操作时要使用的上下文数据
数据库内记录非常丰富,可以根据状态
执行许多特定或通用操作。 某些字段(和相应的行为)在状态之间共享:
model_id
- 与行动相关联的Odoo模型,在评估上下文中提供
condition
(optional)- 使用服务器操作的评估上下文评估为Python代码。 如果
False
,则阻止该操作运行。 默认值:True
有效的操作类型(state
字段)是可扩展的,默认类型是:
code
默认且最灵活的服务器操作类型,使用操作的评估上下文执行任意Python代码。 仅使用一个特定类型的特定字段:
code
- 调用操作时要执行的一段Python代码
<record model="ir.actions.server" id="print_instance">
<field name="name">Res Partner Server Action</field>
<field name="model_id" ref="model_res_partner"/>
<field name="code">
raise Warning(object.name)
</field>
</record>
Note
代码段可以定义一个名为action
的变量,该变量将作为下一个要执行的操作返回给客户端:
<record model="ir.actions.server" id="print_instance">
<field name="name">Res Partner Server Action</field>
<field name="model_id" ref="model_res_partner"/>
<field name="code">
if object.some_condition():
action = {
"type": "ir.actions.act_window",
"view_mode": "form",
"res_model": object._name,
"res_id": object.id,
}
</field>
</record>
如果满足某些条件,将要求客户打开一份表格进行记录
这往往是从数据文件创建的唯一操作类型,除了multi之外的其他类型比从Python定义的Python代码更简单,但不是来自数据文件。
object_create
从头开始创建新记录(通过create()
)或复制现有记录(通过copy()
)
use_create
创作政策,其中之一:
new
- 在
model_id
指定的模型中创建记录 new_other
- 在
crud_model_id
指定的模型中创建记录 copy_current
- 复制调用操作的记录
copy_other
- 复制通过
ref_object
获得的其他记录
fields_lines
创建或复制记录时要覆盖的字段。 带有字段的
One2many
:col1
ir.model.fields
在use_create隐含的模型中设置
value
- 字段的值,通过
type
解释 type
- 如果
值
,值
字段被解释为文字值(可能被转换),如果方程式
值
字段被解释为Python表达式并进行评估
crud_model_id
- 如果
use_create
设置为new_other
,则创建新记录的模型 ref_object
引用
到要复制的任意记录,如果use_create
设置为copy_other
时使用link_new_record
- boolean flag通过
link_field_id
指定的many2one字段将新创建的记录链接到当前记录,默认为False
link_field_id
- many2one to
ir.model.fields
,指定当前记录的m2o字段,应在其上设置新创建的记录(模型应匹配)
object_write
与object_create类似,但改变现有记录而不是创建记录
use_write
写政策,其中一个:
current
- 写入当前记录
other
- 写入通过
crud_model_id
和ref_object
选择的其他记录 expression
- 写入另一条记录,其模型通过
crud_model_id
选择,其id通过评估write_expression
选择
write_expression
- Python表达式返回记录或对象id,当
use_write
设置为expression
时使用,以决定应修改哪条记录 fields_lines
- see object_create
crud_model_id
- see object_create
ref_object
- see object_create
multi
一个接一个地执行多个动作。 要执行的操作是通过child_ids
m2m定义的。 如果子操作本身返回操作,则最后一个操作将作为多个自己的下一个操作返回给客户端
trigger
向工作流程发送信号。
wkf_transition_id
Many2one
到workflow.transition
来触发use_relational_model
- 如果
base
(默认值),则代表当前记录触发信号。 如果relational
,则代表通过wkf_model_id
和wkf_field_id
选择的当前记录的字段触发信号。
client_action
间接返回使用action_id
定义的其他操作。 只需将该操作返回给客户端即可执行。
Evaluation context
服务器操作的评估上下文中包含许多键:
model
- 通过
model_id
链接到操作的模型对象 object
,obj
- 仅在提供
active_model
和active_id
(通过上下文)时才可用,否则无
。 由active_id
选择的实际记录 pool
- 当前的数据库注册表
datetime
,dateutil
,time
- 相应的Python模块
cr
- 当前的光标
user
- 当前的用户记录
context
- 执行上下文
Warning
警告
异常的构造函数
Report Actions (ir.actions.report.xml
)
触发打印报告
name
(mandatory)- 仅在某种列表中查找报表时,它仅用作报表的助记符/描述
model
(mandatory)- 您的报告将涉及的模型
report_type
(mandatory)- 用于PDF报告的
qweb-pdf
或用于HTML的qweb-html
report_name
- 报告的名称(将是PDF输出的名称)
groups_id
Many2many
字段允许查看/使用当前报告的组paperformat_id
Many2one
字段为您希望用于此报告的纸张格式(如果未指定,将使用公司格式)attachment_use
如果设置为
True
,则报告仅在第一次请求时生成,并在之后从存储的报告中重新打印,而不是每次都重新生成。可用于必须仅生成一次的报告(例如,出于法律原因)
attachment
- python表达式,用于定义报告的名称;该记录可作为变量
object
访问
Client Actions (ir.actions.client
)
触发完全在客户端中实现的操作。
tag
- 操作的客户端标识符,客户端应该知道如何响应的任意字符串
params
(optional)- 用于发送到客户端的其他数据的Python字典,以及客户端操作标记
target
(optional)- 是否应在主要内容区域(
当前
),全屏模式(全屏
)或对话框/弹出窗口中打开客户端操作(new
)。 使用main
代替current
清除面包屑。 默认为当前
。
{
"type": "ir.actions.client",
"tag": "pos.ui"
}
告诉客户启动销售点界面,服务器不知道POS界面如何工作。