“向导业务逻辑”的版本间的差异

来自Odoo大V社-odoo中文开发手册
跳转至: 导航搜索
(创建页面,内容为“接下来,我们需要实现对窗体按钮执行的操作。排除Cancel按钮,我们有三个操作按钮来实现,但现在我们将专注于Mass Update按...”)
(没有差异)

2017年5月5日 (五) 11: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.