Action (动作)
写道
动作(Action):用户操作系统时(如点击菜单、点击画面右边的工具条上的按钮等),系统的响应动作。
将菜单和对应的对象、视图关联起来的是Action。
当点击菜单时,触发Action,Action调用对象的Search方法,从数据库取得记录,Action又创建视图,显示取得的数据.
当点击菜单时,触发Action,Action调用对象的Search方法,从数据库取得记录,Action又创建视图,显示取得的数据.
一个Action包含一个对象,包含若干个视图View,通常每个Action都包含列表和表单两个视图。当Action被触发时,相应的视图被调出,展示响应的对象的数据。Action有多种类型,最常见的是Act_Window(窗口类型),窗口类型跳出一个窗口以显示数据。此外还有Report(报表)、Wizard(向导)等类型。
例如,当打开一个财务凭证时(对象account.invoice),客户端发生的动作链是:
1)激发一个Action,Action要求打开account.invoice对象。Action中包含了对象、视图、域条件(Domain,如只显示未支付
的凭证)等数据
2)客户端询问服务端(通过XML-RPC)凭证对象定义了哪些视图,以及应显示什么数据
3)客户端呈现视图,展示数据
例如,当打开一个财务凭证时(对象account.invoice),客户端发生的动作链是:
1)激发一个Action,Action要求打开account.invoice对象。Action中包含了对象、视图、域条件(Domain,如只显示未支付
的凭证)等数据
2)客户端询问服务端(通过XML-RPC)凭证对象定义了哪些视图,以及应显示什么数据
3)客户端呈现视图,展示数据
<record model="ir.actions.act_window" id="openacademy_training_act"> <field name="name">Training</field> <field name="res_model">openacademy.training</field> <field name="view_type">form</field> <field name="view_mode">tree,form</field> </record>
MenuItem (菜单)
<menuitem name="Tools" id="tools_menu" /> <menuitem name="OpenAcademy" id="openacademy_training_menu" parent="openacademy.tools_menu" action="openacademy_training_act" />
Widgets
• <field /> ComboBox CheckBox Date Text Integer, Float • <label /> • <separator /> • <button /> • <notebook /> • <group />
-- field:
<form> ... <field name="field_name" /> ... </form> • 系统会根据要显示的字段的类型,自动选择默认的Widgets
-- label
<form> ... <label string=“我的标签" /> ... </form>
-- Separator
<form> ... <separator string=“标题 Separator"/> ... </form>
-- Button
# object_view.xml <form> ... <button type="object" name="python_function" string="Label" /> <button type="workflow" name="workflow_signal" string="Label"/> <button type="action" name="%(wizard_id)d" string="Label"/> ... </form> # object_wizard.xml <wizard id="wizard_id" keyword="client_action_multi" model="openacademy.training" name="openacademy.training.do_something" multi="True" string="Label"/> • type – 可选值有 workflow (default), object, action workflow表示点击按钮,发送name属性指定的signal。object 表示点击按钮,调用name属 性指定的对象方法。action 表示点击按钮,调用name属性指定的动作(ir.actions.actions) • special – 目前只有一个值:cancel,表示本按钮关闭画面,不做任何进一步动作。注意: special 和name 是互斥的,不能同时出现。 • name – 指定哪个signal被发送,哪个方法被调用,哪个action被触发。 • confirm – 点击按钮时弹出一个确认Message • string – 按钮的显示名 • icon – 按钮的显示图标 • states, attrs, invisible, default_focus – 与fields的属性含义一致。
-- Notebook
<form> ... <notebook> <page string="First page"> ... </page> <page string="Second page"> ... </page> </notebook> ... </form>
-- Group
<form> ... <group> <field name="state" /> <button /> <button /> </group> ... </form>
View – Attributes
• select :可选值 1 -> 一级过滤项目 2 -> 二级(扩展)过滤项目 •string – 字段显示名 •password – 本字段内容是否以*号显示 •mode="tree,graph":one2many等复杂字段的编辑模式 •nolabel – 不显示标签 •colspan – 列宽 •col – 本字段的列宽 •default_focus – 本字段是否获得默认焦点 •states – 指定什么状态下本字段可编辑,如 states="draft,confirm" •domain – 用于 (many2one, many2many) 关系中过滤关系对象 •eval – 通过一个Python表达式计算本字段的值 •required – 本字段是否必须的 •readonly – 本字段是否只读 •Invisible – 本字段是否可见 •widget – 本字段的界面元素
Relate Window
•Example: <act_window id="openacademy_instructor_relate_its_training" name="Trainings" src_model="openacademy.instructor" res_model="openacademy.training" domain="[(instructor_id', '=', active_id)]" /> #该实例弹出窗口,显示当前培训师所有的课程