“向导业务逻辑”的版本间的差异
来自Odoo大V社-odoo中文开发手册
(创建页面,内容为“接下来,我们需要实现对窗体按钮执行的操作。排除Cancel按钮,我们有三个操作按钮来实现,但现在我们将专注于Mass Update按...”) |
(没有差异)
|
2017年5月5日 (五) 03:04的版本
接下来,我们需要实现对窗体按钮执行的操作。排除Cancel按钮,我们有三个操作按钮来实现,但现在我们将专注于Mass Update按钮。 通过按钮调用的方法是do_mass_update和它应该被定义在models/todo_wizard_model.py文件,如下面的代码所示︰
from odoo import exceptions import logging _logger = logging.getLogger(__name__) # ... # class TodoWizard(models.TransientModel): # ... @api.multi def do_mass_update(self): self.ensure_one() if not (self.new_deadline or self.new_user_id): raise exceptions.ValidationError('No data to update!') _logger.debug('Mass update on Todo Tasks %s', self.task_ids.ids) vals = {} if self.new_deadline: vals['date_deadline'] = self.new_deadline if self.new_user_id: vals['user_id'] = self.new_user_id # Mass write values on all selected tasks if vals: self.task_ids.write(vals) return True
我们的代码应该处理一次,所以我们用一个向导实例self.ensure_one()要明确指出这一点。在这里 self表示向导窗体上的数据的浏览记录。 该方法通过验证如果新的截止日期或负责用户被给出,并将引发错误,如果不开始。接下来,我们有如何调试消息写入服务器日志的示例。 然后vals要设置与大规模更新的值与建立字典︰ 新的日期,新负责,或两者。然后write方法来执行大规模的更新。这是一个循环,在每个记录上执行单个写入效率更高。 是一个好的做法,方法总是返回一些内容。这就是为什么它返回True的值就结束了。唯一的理由是,XML-RPC 协议不支持无值,所以这些方法不会可使用该协议。在实践中,你可能不知道的问题因为 web 客户端使用 JSON RPC,没有 XML-RPC,但它仍是一个好的习惯,效仿。 接下来,我们会仔细看看日志记录,工作,然后会在顶部的两个按钮背后的逻辑︰Count和Get All.