我创建了一个one2many到客户表单。所以,当我验证(按钮验证)发票时,我试图在那个one2many中传递一些值。我尝试了很多方法并且关注了odoo论坛,但是我很难做到这一点。使用以下代码: 我的one2many字段是'res.partner'中的'customer_status':
@api.multi
@api.model
def invoice_validate(self):
customer_obj=self.env['res.partner']
customer_id=customer_obj.search([('id','=',self.partner_id.id)])
customer_line=customer_obj.browse(customer_id)
dd = {'policy_number': self.policy_no,}
customer_stat_add = customer_obj.write([customer_line.id],{
'customer_status': [(0, 0, dd)]
})
state_change = self.write({'state': 'open'})
return state_change, customer_stat_add
它给了我这个错误:
ValueError: "invoice_validate() takes exactly 2 arguments (1 given)" while evaluating
u'invoice_validate()'
感谢。
答案 0 :(得分:0)
按钮w / new api需要@api.multi
,如果您想处理单个对象,可以使用self.ensure_one()
;
@api.multi
def foo(self):
self.ensure_one()
print self.my_field
此外,您不需要浏览对象,因为您已经获得了具有新api的浏览对象。
请记住,如果该功能是一个odoo基本功能,你必须调用super()。method_name来不破坏任何东西;)