Odoo 页面-‘动作’-官方文档解释

15 篇文章 1 订阅

1、图示总概览-动作分类

  • 窗口动作(Window Actions) ------(ir.actions.act_window)
  • 网址URL动作(URL Actions) ------(ir.actions.act_url)
  • 服务器动作(Server Actions)------ (ir.actions.server)
  • 报告动作(Report Actions)------ (ir.actions.report.xml)
  • 客户动作(Client Actions)------ (ir.actions.client)
    Action--思维导向图

2、官方文档

动作可以存储在数据库中,也可以直接作为字典返回,例如按钮方法。所有操作都有两个强制性属性:
type

  • 当前动作的类别,确定可以使用哪些字段以及如何解释动作

name

  • 操作的简短用户可读描述,可以显示在客户端的界面中
  • 客户端可以通过 4 种形式获取操作:

False

  • 如果当前打开了任何操作对话框,请将其关闭

一个字符串

  • 如果客户端操作匹配,则解释为客户端操作的标记,否则视为数字

一个号码

  • 从数据库中读取对应的动作记录,可以是数据库标识符,也可以是外部id

一本字典

  • 视为客户端操作描述符并执行

窗口动作Window Actions (ir.actions.act_window)

最常见的动作类型,用于通过 视图呈现模型的可视化:窗口动作为模型(可能还有模型的特定记录)定义一组视图类型(可能还有特定视图)。
它的字段是:
res_model

  • 模型来呈现视图

views

  • (view_id, view_type) 对的列表。每对的第二个元素是视图的类别(树、表单、图形…),第一个元素是可选的数据库 ID(或 False)。如果没有提供 id,客户端应该为请求的模型获取指定类型的默认视图(这由 fields_view_get()自动完成)。列表的第一种类型是默认视图类型,在执行操作时默认打开。每种视图类型在列表中最多应出现一次

res_id(可选的)

  • 如果默认视图是form,则指定要加载的记录(否则应创建新记录)

search_view_id(可选的)

  • (id, name)pair,id是要为操作加载的特定搜索视图的数据库标识符。默认获取模型的默认搜索视图

target(可选的)

  • 视图是否应在主要内容区域 ( current)、全屏模式 ( fullscreen) 或对话框/弹出窗口 ( new) 中打开。使用main而不是current清除breadcrumbs。默认为 current.

context(可选的)

  • 要传递给视图的附加上下文数据

domain(可选的)

  • 过滤域以隐式添加到所有视图搜索查询

limit(可选的)

  • 默认情况下要在列表中显示的记录数。在 Web 客户端中默认为 80

auto_search(可选的)

  • 是否应在加载默认视图后立即执行搜索。默认为True

例如,使用列表和表单视图打开客户(设置了客户标志的合作伙伴):

{
    "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” , 
}

数据库内窗口操作有几个不同的字段,客户端应该忽略这些字段,主要用于组成views列表:

view_mode

  • 以逗号分隔的视图类型列表作为字符串。所有这些类型都将出现在生成的views列表中(至少有一个Falseview_id)

view_ids

  • M2 M1查看对象,定义views初始内容

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”视图,即使这不是模型的默认视图。
views序列的服务器端组成如下:

  • 从 view_ids 中获取每个 (id, type) (按顺序sequence)
  • 如果 view_id 已定义且其类型尚未填充,则附加其 (id, type)
  • 对于 view_mode 中的每个未填充类型,追加 (False, type)

需求实例:
方法1:弹窗然后确认方法

    <record id="wizard_batch_handle_record_so_form_view" model="ir.ui.view">
        <field name="name">Batch Handle Record Wizard For S.O. Form View</field>
        <field name="model">wizard.batch.handle.so</field>
        <field name="type">form</field>
        <field name="arch" type="xml">
            <form string="Batch Handle Sale Order">
                <div>
                    <h4>Test one</h4>
                    <h5 style="color:red">Please make sure your approve flow is all auto approve and check your sale order correct</h5>
                </div>
                <footer>
                    <button name="**此处为想要执行的方法**" string="Confirm" type="object" class="btn-primary"/>
                    <button string="Cancel" class="btn-default" special="cancel"/>
                </footer>
            </form>
        </field>
    </record>

    <act_window id="act_wizard_batch_handle_so_record"
                name="Batch Handle Sale Order"
                res_model="wizard.batch.handle.so"   ============>跳转的wizard瞬态模型
                src_model="sale.order"  						=============>动作所在的模型
                multi="True"
                key2="client_action_multi"
                target="new"
                view_type="form"
                view_mode="form"
                groups="rh_sale.group_batch_handle_sale_order"/>
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 	    <record id="view_badge_wizard_reward" model="ir.ui.view">
            <field name="name">gamification.badge.user.wizard.form</field>
            <field name="model">gamification.badge.user.wizard</field>
            <field name="arch" type="xml">
                <form string="Reward Employee with">
                    What are you thankful for?
                    <group>
                        <field name="employee_id" invisible="1" />
                        <field name="user_id" invisible="1" />
                        <field name="badge_id" nolabel="1" colspan="4" />
                        <field name="comment" nolabel="1" placeholder="Describe what they did and why it matters (will be public)" />
                    </group>
                    <footer>
                        <button string="Reward Employee" type="object" name="action_grant_badge" class="btn-primary" />
                        <button string="Cancel" special="cancel" class="btn-default"/>
                    </footer>
                </form>
            </field>
        </record>

        <act_window id="action_reward_wizard" domain="[]"
            name="Reward Employee"
            target="new"
            res_model="gamification.badge.user.wizard"      ============>跳转的wizard瞬态模型(需要在view里显示数据的model)
            context="{'default_employee_id': active_id, 'employee_id': active_id}"
            view_type="form" view_mode="form"
            view_id="view_badge_wizard_reward"/>           ======># 数据库视图记录id或False,如果没有指定id,客户端会自动用fields_view_get()获取相应类型的默认视图。(也有指定view_id的)

方法2:直接执行方法

    <record id="***ID***" model="ir.actions.server">
        <field name="name">Terminate Routine Inspection Tasks In Batches</field>
        <field name="type">ir.actions.server</field>
        <field name="model_id" ref="模块名称.model_模型名称"/>
        <field name="state">code</field>
        <field name="code">
            if records:
            action = records.方法名()
        </field>
    </record>

    <record id="action_terminate_routine_inspection_tasks_in_batches" model="ir.values">
        <field name="name">Terminate Routine Inspection Tasks In Batches</field>
        <field name="model_id" ref="模块名称.model_模型名称"/>
        <field name="model">页面动作所属模型</field>
        <field name="key2">client_action_multi</field>
        <field eval="'ir.actions.server,%d'%***ID***" name="value"/>
    </record>

网址URL动作 URL Actions (ir.actions.act_url)

允许通过 Odoo 操作打开 URL(网站/网页)。可以通过两个字段进行自定义:

url

  • 激活动作时打开的地址

target

  • 在新窗口/页面中打开地址 if new,将当前内容替换为页面 if self。默认为new。如果是new的,则在新窗口/页面中打开地址,如果是 self,则用页面替换当前内容。默认为new
{
   "type": "ir.actions.act_url",
   "url": "http://odoo.com",
   "target": "self",
}

将用 Odoo 主页替换当前内容部分。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值