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个参数
因此,您需要将参数更改为justself
(按钮方法的新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)