窗口动作
来自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,如在我们的示例中,它将使该选项仅在表单视图中可用,因此一次只能应用于一个记录。
上一节:菜单项 下一节:上下文和域