窗口动作

来自Odoo大V社-odoo中文开发手册
跳转至: 导航搜索

窗口动作给出GUI客户端指令,通常由视图中的菜单项或按钮使用。 它告诉GUI应该使用什么模型,以及提供哪些视图。 这些操作可以使用domain过滤器强制只有一部分记录可见。 他们还可以通过context属性设置默认值和过滤器。

我们将向 views/todo_menu.xml数据文件添加窗口动作,这些动作将由上一节中创建的菜单项使用。 编辑文件,并确保动作定义在菜单项之前:

   
    <!-- Actions for the menu items -->
    <act_window id="action_todo_stage" name="To-Do Task Stages" res_model="todo.task.stage" view_mode="tree,form" target="current"
        context="{'default_state': 'open'}" domain="[]" limit="80" />
    <act_window id="todo_app.action_todo_task" name="To-Do Tasks" res_model="todo.task" view_mode="tree,form,calendar,graph,pivot"
        target="current" context="{'search_default_filter_my_tasks': True}" />
    <!-- Add option to the "More" button -->
    <act_window id="action_todo_task_stage" name="To-Do Task Stages" res_model="todo.task.stage" src_model="todo.task" multi="False" />

窗口动作存储在ir.actions.act_window模型中,可以使用前面代码中使用的<act_window>快捷方式在XML文件中定义。

  • name是将在通过此操作打开的视图中显示的标题。
  • res_model是目标模型的标识符
  • view_mode是可用的视图类型和它们的顺序。 第一个是默认打开的。
  • target,如果设置为new,将在弹出的对话框窗口中打开视图。 默认值为current,在主内容区域中打开视图。
  • context设置关于目标视图的上下文信息,上下文中可以设置默认值或激活过滤器以及其他信息。 我们将在稍后更详细地看到它。
  • domain是一个域表达式,强制过滤在打开的视图中可浏览的记录。
  • limit是列表视图中每个页面的记录数。


XML中定义的第二个动作替换todo_app插件的原始To-do任务动作,以便显示我们将在本章后面要讨论的其他视图类型:日历和图形。 这些更改安装后,您会在右上角列表和表单按钮的后面到其他按钮; 然而,这些按钮将不工作,直到我们创建相应的视图。

我们还添加了第三个动作,不在任何菜单项中使用。 它向我们展示了如何向列表和表单视图右上角的更多菜单添加选项。 它使用两个特定的属性:

  • src_model指示应该在什么模型上此动作可用。
  • multi,当设置为True时,使它在列表视图中可用,以便它可以应用于多条选中的记录。 默认值为False,如在我们的示例中,它将使该选项仅在表单视图中可用,因此一次只能应用于一个记录。
上一节:菜单项 下一节:上下文和域