如何修复'TypeError:unlink()缺少1个必需的位置参数:\'values \'\ n''

问题描述 投票:2回答:1

我使用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 api odoo odoo-11
1个回答
1
投票

此错误是python错误,您调用了method,该位置是使用不带参数的位置参数values定义的。这里的问题是模型的unlink方法不接受任何争论。

因此,请检查您的Costum附加组件,您在哪里继承了sale.order模型,并覆盖了unlink方法并删除了values参数。

在您的odoo实例中寻找此方法并删除values争论,重新启动服务器,一切都会好起来的。

   _inherit = 'sale.order'

  ......
  ......

   @api.multi
   def unlink(values):

0
投票

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变量中得到的内容更新您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.