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

来自Odoo大V社-odoo中文开发手册
跳转至: 导航搜索
(创建页面,内容为“接下来,我们需要实现对窗体按钮执行的操作。排除Cancel按钮,我们有三个操作按钮来实现,但现在我们将专注于Mass Update按...”)
 
第1行: 第1行:
接下来,我们需要实现对窗体按钮执行的操作。排除Cancel按钮,我们有三个操作按钮来实现,但现在我们将专注于Mass Update按钮。
+
接下来,我们需要实现对窗体按钮执行操作。排除Cancel按钮,我们有三个操作按钮来实现,但现在我们将集中使用Mass Update按钮。
 +
 
 
通过按钮调用的方法是do_mass_update和它应该被定义在models/todo_wizard_model.py文件,如下面的代码所示︰
 
通过按钮调用的方法是do_mass_update和它应该被定义在models/todo_wizard_model.py文件,如下面的代码所示︰
 +
 
  <nowiki>
 
  <nowiki>
 
from odoo import exceptions
 
from odoo import exceptions
第32行: 第34行:
 
</nowiki>
 
</nowiki>
  
我们的代码应该处理一次,所以我们用一个向导实例self.ensure_one()要明确指出这一点。在这里 self表示向导窗体上的数据的浏览记录。
+
我们的代码应该处理一次向导实例,所以我们明确指出这一点self.ensure_one()。在这里 self表示向导窗体上数据的浏览记录。
该方法通过验证如果新的截止日期或负责用户被给出,并将引发错误,如果不开始。接下来,我们有如何调试消息写入服务器日志的示例。
+
 
然后vals要设置与大规模更新的值与建立字典︰ 新的日期,新负责,或两者。然后write方法来执行大规模的更新。这是一个循环,在每个记录上执行单个写入效率更高。
+
该方法首先验证一个新的截止日期日期或负责任的用户如果没有就会出现错误。接下来,我们怎样写一个调试信息传到服务器日志的例子。
是一个好的做法,方法总是返回一些内容。这就是为什么它返回True的值就结束了。唯一的理由是,XML-RPC 协议不支持无值,所以这些方法不会可使用该协议。在实践中,你可能不知道的问题因为 web 客户端使用 JSON RPC,没有 XML-RPC,但它仍是一个好的习惯,效仿。
+
 
接下来,我们会仔细看看日志记录,工作,然后会在顶部的两个按钮背后的逻辑︰Count和Get All.
+
然后使用批量更新一起来设置构建“vals”字典:
 +
 
 +
新的日期,新的责任人,或者两者都有。然后在记录集上执行批量更新的平台上使用“write”方法。这比在每个记录上执行单独的操作循环更有效。
 +
 
 +
对于总是返回某些东西的方法来说,这是一种很好的做法。这就是为什么它最后返回True的值。唯一的原因是XML-RPC协议不支持任何值,因此这些方法无法使用这一协议。
 +
 
 +
在实践中,您可能没有意识到这个问题,因为web客户端使用的是JSON-RPC,而不是XML-RPC,但是这仍然是一个很好的实践。
 +
 
 +
接下来,我们将对日志进行更深入的研究,然后对顶部的两个按钮进行后面的逻辑分析︰Count和Get All

2017年5月28日 (日) 22:31的版本

接下来,我们需要实现对窗体按钮执行操作。排除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