何时在 odoo 中使用 api.one 和 api.multi |打开程序?

2024-04-22

最近odoo(以前的OpenERP)V8已经发布了。在新的 API 方法中引入了装饰器。在models.py方法需要修饰@api.one or @api.multi.

参考odoo 文档 https://www.odoo.com/documentation/8.0/我无法确定确切的用途。谁能详细解释一下。

Thanks.


通常,两个装饰器都用于装饰记录式方法,其中 'self' 包含记录集(s)。让我简要解释一下何时使用@api.one and @api.multi:

1. @api.one:

  • 装饰一个记录式方法,其中 'self' 预计是一个单例实例。

  • 装饰方法自动在记录上循环(即,对于记录集中的每个记录,它调用该方法),并且列出结果.

  • 如果该方法用 @returns 修饰,它将连接结果实例。这样的方法:

    @api.one def 方法(自身,参数): 返回自己的名字

可以以记录风格和传统风格调用,例如:

# recs = model.browse(cr, uid, ids, context)
names = recs.method(args)

names = model.method(cr, uid, ids, args, context=context)
  • 每次“自我”都被重新定义为当前记录。

2. @api.multi:

  • 装饰一个记录式方法,其中 'self' 是一个记录集。该方法通常定义对记录的操作。这样的方法:

    @api.multi def 方法(自身,参数):

可以以记录风格和传统风格调用,例如:

# recs = model.browse(cr, uid, ids, context)
recs.method(args)

model.method(cr, uid, ids, args, context=context)

何时使用:

  1. 如果您使用@api.one,则返回值位于列表中。 Web 客户端并不总是支持这一点,例如按钮动作 方法。 在这种情况下,您应该使用 @api.multi 来装饰您的方法,并且可能在中调用 self.ensure_one() 方法定义。

  2. 最好使用 @api.multi 和 self.ensure_one() 而不是 @api.one 来避免返回值的副作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

何时在 odoo 中使用 api.one 和 api.multi |打开程序? 的相关文章

  • XCode 中的文件夹未显示在磁盘上

    我在 XCode 中向我的项目添加了一个文件夹 并将其命名为 Themes 它将用于存储我的 iPad 应用程序的主题 在它下面我有红色 蓝色等等 它们出现在 XCode 中 但是当我查看物理文件夹时 没有 Themes 目录 显然其下没有

随机推荐