gpt4 book ai didi

odoo - @ api.one,@ api.multi和@ api.model有什么区别?

转载 作者:行者123 更新时间:2023-12-04 04:04:46 26 4
gpt4 key购买 nike

我对Odoo中的@api.one@api.multi@api.model感到困惑。

这三个之间有什么区别,它们的用例分别是什么?

最佳答案

api.one用于仅在一条记录上调用method的情况。确保使用api.one装饰器调用方法时没有多个记录。假设您有记录partner = res.partner(1,)。它只有一条记录,并且有一个示例方法(在res.partner中):

@api.one
def get_name(self):
return self.name #self here means one record

像这样调用它:
partner.get_name()

但是,如果还有更多记录,例如 partners = res.partner(1, 2,)
调用它会发出警告,告诉您只能在一条记录上调用它。对于多条记录,使用 api.multi,其中 self是记录集,可以在所有记录中进行迭代以执行某些操作。例如:
@api.multi
def get_partner_names(self):
names = []
for rec in self:
names.append(rec.name)
return ', '.join(names)

当您需要对模型本身进行某些操作并且不需要修改/检查确切的模型记录时,就可以使用 api.model。例如,可能存在返回有关模型结构的元信息或一些辅助方法等的方法。在文档中也称此api从旧api迁移时很好用,因为它“礼貌地”将代码转换为新api 。同样以我自己的经验,如果您需要返回某些内容的方法,则 model装饰器非常有用。 api.one返回空列表,因此在应该返回值的方法上使用 api.one时,它可能会导致意外行为。

更多信息: http://odoo-new-api-guide-line.readthedocs.org/en/latest/decorator.html

关于odoo - @ api.one,@ api.multi和@ api.model有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31112660/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com