Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TypeError:appliquer()至少接受4个参数(给定2个)_Python_Odoo_Odoo 8 - Fatal编程技术网

Python TypeError:appliquer()至少接受4个参数(给定2个)

Python TypeError:appliquer()至少接受4个参数(给定2个),python,odoo,odoo-8,Python,Odoo,Odoo 8,这是我的职责: @api.multi def appliquer(self,cr,ids,uid, context= None): wizard = self.browse(cr, uid, ids[0], context) res=[] for x in wizard: if x.vendeur: res.append(('user_id','=',x.vendeur.id)) if x.agenc

这是我的职责:

@api.multi
def appliquer(self,cr,ids,uid, context= None):
    wizard = self.browse(cr, uid, ids[0], context)
    res=[]        
    for x in wizard:
        if x.vendeur:
            res.append(('user_id','=',x.vendeur.id))
        if x.agence_id:
            res.append(x.agence_id)        
        if x.open:
            res.append(x.ca)
        if x.draft:
            res.append(x.ca)
        if x.paid:
            res.append(x.ca)
        if x.dare_from and x.date_to:
            res.append(('date_from', '>=', x.date_from.id))
            res.append(('date_to', '<=', x.date_to.id)) 
    return {
        'name' : 'Chiffre d\'affaire',
        'view_type' : 'form',
        'view_mode' : 'tree,graph',
        'res_model' : 'ca.report',
        'type' : 'ir.actions.act.window',
        'target' : 'new',
        'res' : res,
    }

     }

我已经尝试了很多解决方案,但是没有一个是有效的。

您在这里混合了新API和旧API。您已经用
api.multi
装饰了
appriquer()
。这个decorator让我们将处理新旧API样式方法的包装器包装为新样式API方法

通过在按钮上调用此方法,Odoo使用2个参数填充参数,但您的方法使用4个参数

因此,您需要将参数更改为just
self
(按钮方法的新API中不需要更多参数),当然也需要将其重写为using self(不需要浏览,等等),或者删除装饰器

编辑:因为我不再喜欢旧的API,而且因为它现在已不推荐使用,我将把您的方法迁移到新的API样式:

@api.multi
def贴花机(自身):
res=[]
对于自助向导:
如果wizard.vendeur:
res.append(('user_id','=',wizard.vendur.id))
如果wizard.agence\u id为:
res.append(wizard.agent\u id)
如果wizard.open或wizard.draft或wizard.paid:
res.append(wizard.ca)
如果wizard.dare_从和wizard.date_到:
res.append(('date\u from','>=',wizard.date\u from.id))

res.append(('date_to','答案在您的问题中:AppLiker()至少接受4个参数(给定2个)。似乎是调用AppLiker()的“按钮”)func没有传递所需的参数show可以让它传递所需的参数,因为我在这里迷路了这是我刚刚做的,它可以工作我总是将新的api与旧的混合:p谢谢你的帮助我的新conde看起来像:@api.multi-def-applicker(self,cr,context=None):wizard=self.browse(cr)
TypeError: appliquer() takes at least 4 arguments (2 given)