gpt4 book ai didi

python - Odoo v10 API 与 Odoo v8 API

转载 作者:行者123 更新时间:2023-12-01 03:14:10 24 4
gpt4 key购买 nike

我只是想知道,一些函数如何翻译成新的 API,或者是否需要完全翻译它们,具体取决于我们使用的 api 调用。

例如,

@api.model

the method is exposed as not using ids, its recordset will generally be empty. Its "old API" signature is cr, uid, *arguments, context:
@api.model
def some_method(self, a_value):
pass
# can be called as
old_style_model.some_method(cr, uid, a_value, context=context)

在 Odoo v8 上,假设我有这样的功能:

def update_info(self, cr, uid, ids, context=None):
""" OpenERP osv memory wizard : update_info_partner
"""
context = context or {}
seniat_url_obj = self.env('seniat.url')
self.cr.execute('''SELECT id FROM res_partner WHERE vat ilike 'VE%';''')
record = self.cr.fetchall()
pids = [item[0] for item in record]
seniat_url_obj.connect_seniat(cr, uid, pids, context=context,
all_rif=True)
return{}

如果我向这个函数添加@api.model装饰器,我想我还需要更新它的属性,即:self, cr, uid, ids, context=None ,对吗?

在这种情况下,添加 @api.model 装饰器,然后将函数属性更改为仅 self 就足够了?

从现在开始,我只是想知道如何解决这个问题,因为我正在将一些模块从 v8 迁移到 v10。

最佳答案

正如你自己写的

the method is exposed as not using ids, its recordset will generally be empty.

api.model在 odoo ORM 上下文中,更多的是静态方法。对于 python 本身来说,它当然不是静态方法。如果您正在使用记录(数据库记录作为 python 对象),请使用 api.multiapi.one 。如果您根本没有记录,例如 ORM create() ,使用api.model .

仅就本主题而言,将旧方法“翻译”为新 API 可以认为非常简单。如果您看到idsid或者也许<model>_id(s)在方法参数中,可能是api.multiapi.one 。如果您没有:api.model 。计算、onchange 和约束方法除外。

关于python - Odoo v10 API 与 Odoo v8 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42614728/

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