Odoo中文网|Odoo实施培训

 找回密码
 立即注册
搜索
热搜: Odoo OpenERP 实施
查看: 6543|回复: 1
打印 上一主题 下一主题

智能按钮

[复制链接]

85

主题

94

帖子

475

积分

中级会员

Rank: 3Rank: 3

积分
475
跳转到指定楼层
楼主
发表于 2018-3-30 10:00:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在设计表单结构时,我们设置了一个包含智能按钮的顶级区域。现在让我们在里面添加一个按钮。
对于我们的应用程序,我们将会有一个按钮,显示当前任务的所有者的总数量,点击它将导航到这些项目的列表。
首先,我们需要将相应的计算字段添加到models/todo_model.py.为TodoTask类添加如下代码:
def compute_user_todo_count(self):
for task in self:
task.user_todo_count = task.search_count(
[('user_id', '=', task.user_id.id)])
user_todo_count = fields.Integer(
'User To-Do Count',
compute='compute_user_todo_count')
接下来,我们添加按钮框和其中的按钮。在oe_title div之后,取代我们之前加入的按钮框占位符。如下:

<button class="oe_stat_button"
type="action" icon="fa-tasks"
name="%(action_todo_task_button)d"
context="{'default_user_id': user_id}"
help="All to-dos for this user" >
<field string="To-Dos" name="user_todo_count"
widget="statinfo"/>
</button>

计算user_todo_count 字段,按钮向负责todo任务人员显示todo任务数量。
这里有一些属性,可以添加到智能按钮:
class="oe_stat_button" 呈现一个矩形而不是一个普通的按钮。
icon :设置要使用的图标,可以从图标字体中选择,可用的图标可浏览http://fontawesome.io
type和name是按钮类型和要触发的动作的名称。对于智能按钮,类型通常是action,对于窗口操作,name将是要执行的操作的ID。这里需要一个实际操所的数据库ID,因此我们必须用一个公式将XML ID转换成数据库ID:“%(action-external-id)d”。该操作应该使用相关记录打开一个视图。
string 在按钮上添加标签文本。我们没有在这里使用它,因为包含的字段已经为它提供了一个文本。
context 用于在目标视图上设置默认值,点击按钮后,可以在视图上创建新记录。
help 添加一个帮助提示,当鼠标指针在按钮上时显示该提示。

按钮元素本身是一个容器,带有显示统计信息的字段。这些是使用小部件状态信息的常规字段。它是在底层模型中定义的计算字段。除了字段之外,在按钮中我们还可以使用静态文本,例如:
User's To-dos
单击按钮时,我们希望看到一个只包含当前负责用户的任务的列表。将由action_todo_task_button动作完成,尚未实施。但它需要知道当前的负责用户,才能执行过滤器。
为此,我们使用按钮的上下文属性来存储该值。
使用的动作必须在窗体之前定义,所以我们应该在xml文件的顶部添加它:
<act_window id="action_todo_task_button"
name="To-Do Tasks"
res_model="todo.task"
view_mode="tree,form,calendar,graph,pivot"
domain="[('user_id','=',default_user_id)]" />
请注意我们是如何使用default_user_id上下文是域过滤器的关键。依循按钮链接建立一个新的任务时,这个特定的关键也在user_id字段设置默认值。

回复

使用道具 举报

68

主题

96

帖子

456

积分

中级会员

Rank: 3Rank: 3

积分
456
沙发
发表于 2018-3-30 10:37:56 | 只看该作者
谢谢大神
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|技术支持|开发手册|Odoo中文网-远鼎旗下odoo培训网站 ( 苏ICP备15039516号 )

GMT+8, 2024-4-23 19:42 , Processed in 0.011623 second(s), 9 queries , Xcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表