【问题标题】:Odoo 10 XMl RPC question about passing arguments关于传递参数的 Odoo 10 XML RPC 问题
【发布时间】:2021-04-14 10:36:00
【问题描述】:

我在自定义模型 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']
)

当我执行客户端时,它给了我错误:

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

我在这里做错了什么?

【问题讨论】:

    标签: odoo odoo-10 xml-rpc


    【解决方案1】:

    您可以尝试 [['2714', '12.12.2021']] 代替 ['2714', '12.12.2021']

    【讨论】:

    • 谢谢,我试了同样的错误
    • 编辑:这可行,但在我的函数中,我只能将 def change_date_planned_start(self, args) 作为参数。 v10 api 的文档指出它们是按位置传递的。我认为这里的问题是 self 也被视为一个参数,因此它将第一个数字 2714 传递给我可以在日志中看到的 self 。它通常应该忽略 self
    【解决方案2】:

    你应该给方法change_date_planned_start添加一个装饰器api.model

    from odoo import api
    
    @api.model
    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
    

    【讨论】:

    • 谢谢,即使使用@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']。[1,2,3] 是ids of self,应该等于self.ids
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 2011-04-17
    • 1970-01-01
    • 2021-03-02
    • 2017-05-25
    • 1970-01-01
    相关资源
    最近更新 更多