关于传递参数的Odoo 10 XMl RPC问题

关于传递参数的Odoo 10 XMl RPC问题,odoo,odoo-10,xml-rpc,Odoo,Odoo 10,Xml Rpc,我在自定义模型function.registry中定义了一个函数,如下所示: def change_date_planned_start(self, production_id, new_date): for function in self: production = self.env['mrp.production'].search([ function.domain ])

我在自定义模型function.registry中定义了一个函数,如下所示:

   def change_date_planned_start(self, production_id, new_date):
        for function in self:
            production = self.env['mrp.production'].search([
                function.domain
            ])

            if production:
                production.date_planned_start = new_date
models = xmlrpclib.ServerProxy('{}/xmlrpc/2/object'.format(url), verbose=True)
models.execute_kw(
    db, uid, password, 'function.registry', 'change_date_planned_start',
    ['2714', '12.12.2021']
)
在我的客户端中,我这样调用此函数:

   def change_date_planned_start(self, production_id, new_date):
        for function in self:
            production = self.env['mrp.production'].search([
                function.domain
            ])

            if production:
                production.date_planned_start = new_date
models = xmlrpclib.ServerProxy('{}/xmlrpc/2/object'.format(url), verbose=True)
models.execute_kw(
    db, uid, password, 'function.registry', 'change_date_planned_start',
    ['2714', '12.12.2021']
)
当我执行客户端时,它会给我错误信息:

TypeError: change_date_planned_start() takes exactly 3 arguments (2 given)

我做错了什么?

你可以尝试['2714','12.12.2021']]而不是['2714','12.12.2021']

你应该添加一个装饰器
api.model
到方法
更改日期\u计划开始

来自odoo导入api的

@api.model
def更改日期计划开始日期(自我、生产id、新日期):
对于自我功能:
生产=self.env['mrp.production'].搜索([
函数域
])
如果生产:
production.date\u planning\u start=新日期

谢谢,我尝试了同样的错误编辑:这很有效,但在我的函数中,我只能将def change\u date\u planned\u start(self,args)作为参数。V10API的文档说明它们是按位置传递的。我认为这里的问题是self也被认为是一个参数,所以它将第一个数字2714传递给self,我可以在日志中看到。它通常应该忽略self谢谢,即使使用@api,错误仍然存在。model@Florent如果
self
是一个空记录集,您可以尝试[False、'2714'、'12.12.2021']而不是['2714'、'12.12.2021']。如果self不是空的,您可以尝试[[1,2,3]、'2714'、'12.12.2021']而不是['2714'、'12.12.2021']是
self的
ids
,它应该等于
self.ids