我使用Python 3.6和xmlrpc取消链接在odoo 11 CE中所有已取消的销售订单,但我仍然收到此错误:
odoo11/odoo/api.py", line 690, in call_kw_multi\n result = method(recs, args, *kwargs)\nTypeError: unlink() missing 1 required positional argument: \'values\'\n'>
我也尝试过类似的东西:
, [[sale_id]])
而不是:
, [sale_id])
这里是我的代码:
import xmlrpc.client
class Odoo():
def __init__(self):
self.DATA = "DB"
self.USER = "USER"
self.PASS = "PASS"
self.PORT = "8069"
self.URL = "http://localhost"
self.URL_COMMON = "{}:{}/xmlrpc/2/common".format(
self.URL, self.PORT)
self.URL_OBJECT = "{}:{}/xmlrpc/2/object".format(
self.URL, self.PORT)
def authenticateOdoo(self):
self.ODOO_COMMON = xmlrpc.client.ServerProxy(self.URL_COMMON)
self.ODOO_OBJECT = xmlrpc.client.ServerProxy(self.URL_OBJECT)
self.UID = self.ODOO_COMMON.authenticate(
self.DATA
, self.USER
, self.PASS
, {})
def main():
od = Odoo()
od.authenticateOdoo()
sale_ids = od.ODOO_OBJECT.execute_kw(od.DATA, od.UID, od.PASS, 'sale.order', 'search', [[("state", "=", "cancel")]])
od.ODOO_OBJECT.execute_kw(od.DATA, od.UID, od.PASS, 'sale.order', 'unlink', [sale_ids])
print(od.UID)
if __name__ == '__main__':
main()
此错误是python错误,您调用了method
,该位置是使用不带参数的位置参数values
定义的。这里的问题是模型的unlink方法不接受任何争论。
因此,请检查您的Costum附加组件,您在哪里继承了sale.order
模型,并覆盖了unlink
方法并删除了values
参数。
在您的odoo实例中寻找此方法并删除values
争论,重新启动服务器,一切都会好起来的。
_inherit = 'sale.order'
......
......
@api.multi
def unlink(values):
Search
方法返回记录列表。对于您而言,我们仅需要基于您的域的sale.order ID。
尝试一下:
更改密码
od.ODOO_OBJECT.execute_kw(od.DATA, od.UID, od.PASS, 'sale.order', 'unlink', [sale_ids])
to
od.ODOO_OBJECT.execute_kw(od.DATA, od.UID, od.PASS, 'sale.order', 'unlink', sale_ids)
如果没有用,请用在sale_ids
变量中得到的内容更新您的问题。