如何覆盖res.users类

时间:2018-01-19 14:11:31

标签: override odoo-10 odoo

我想继承res.users类并覆盖她的write方法,所以我写了这段代码:

class User(models.Model):
    _inherit = 'res.users'

    is_commercial = fields.Boolean(string= 'is Commercial')

    @api.multi
    def write(self, values):
        super(User, self).write()
        for partner in self.partner_id:
            partner.is_commercial = self.is_commercial

我也创建了这个res.partner类:

class Partner(models.Model):
    _inherit = 'res.partner'

    is_commercial = fields.Boolean(string= 'is Commercial')

现在,当我尝试更改is_commercial内容时,会出现以下错误:

TypeError: write() got an unexpected keyword argument 'context'

在我看来,覆盖res.users类中的write方法存在语法错误。有人能帮我吗?感谢。

4 个答案:

答案 0 :(得分:2)

您可以尝试这样做:将super(User, self).write()替换为super(User, self).write(values)。这应该有用。

答案 1 :(得分:0)

当你调用write()时,你应该传递任何参数或上下文。所以你可以在write()方法中传递值。如下所示

super(User, self).write(values)

因为write()接受字典类型数据。

答案 2 :(得分:0)

当你调用write()时,尝试传递任何参数或上下文。

例如:

@api.multi
def action_cancel(self):
    res = super(SaleOrder, self).action_cancel()
    .
    .
    your logic
    .
    .
    return res

答案 3 :(得分:-1)

如何覆盖res.users类中的write方法:您只需要编写此代码来覆盖write方法:

 class User(models.Model):
 _inherit = 'res.users'

  @api.multi
  def write(self, vals):
      res = super(User, self).write(vals)
            your code here...
      return res