查看“向导中的助手操作”的源代码
←
向导中的助手操作
跳转至:
导航
、
搜索
因为以下原因,你没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看并复制此页面的源代码:
现在,假设我们想要一个按钮来自动挑选所有的任务,让用户一个接一个地挑选它们。这就是在表单中Get All按钮的要点。该按钮背后的代码将获得一个记录集,其中包含所有活动的任务,并将其分配给多对多字段中的任务。 但这里有个问题。在对话框窗口中,当按下一个按钮时,向导窗口会自动关闭。我们没有使用Count按钮来面对这个问题,因为它使用一个异常来显示它的消息;因此,该操作不成功,窗口没有关闭。 幸运的是,我们可以通过请求客户机重新打开相同的向导来解决这个问题。模型方法可以返回由web客户端执行的窗口操作,在字典对象形式下执行。该字典使用与XML文件中定义窗口操作相同的属性。 我们将为窗口操作字典定义一个helper函数,以重新打开向导窗口,以便可以在几个按钮中轻松地重复使用它:︰ @api.multi <nowiki>@api.multi def _reopen_form(self): self.ensure_one() return { 'type': 'ir.actions.act_window', 'res_model': self._name, # this model 'res_id': self.id, # the current wizard record 'view_type': 'form', 'view_mode': 'form', 'target': 'new'} </nowiki> 值得注意的是,窗口操作可能是其他的东西,比如跳转到不同的向导表单来请求额外的用户输入,这可以用于实现多页面向导。 现在,Get All按钮可以完成它的工作,并且仍然让用户在同一个向导中工作︰ <nowiki> @api.multi def do_populate_tasks(self): self.ensure_one() Task = self.env['todo.task'] open_tasks = Task.search([('is_done', '=', False)]) # Fill the wizard Task list with all tasks self.task_ids = open_tasks # reopen wizard form on same wizard record return self._reopen_form() </nowiki> 在这里,我们可以看到如何使用任何其他可用的模型:我们首先使用self.env[]获得对模型的引用,在这种情况下todo.task,然后可以对其执行操作,比如search(),以检索满足某些搜索条件的记录。 瞬态模型将值存储在向导表单字段中,可以像其他模型一样读取或写入。将all_tasks变量分配给模型task_ids一对多字段。正如您所看到的,这就像我们对任何其他字段类型所做的那样。 上一节:[[抛出异常]] 下一节:[[使用ORM API]]
返回至
向导中的助手操作
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
odoo 中文开发手册
odoo 开发参考
odoo 实施笔记
Odoo 最佳方案
关于 OdooV
Odoo FAQ
工具
链入页面
相关更改
特殊页面
页面信息
友情链接
odoo官网
odoo中文网
odoo实施