如何在res.user中调用res.partner的create函数?

时间:2019-08-07 09:22:40

标签: odoo odoo-11

创建用户时,会自动创建一个res.partner对象。因此,我想在res.partner类中添加一个many2one字段。我继承了res.partner类并覆盖了create方法。

当我使用pdb.set_trace调试时,departmentid没有值。我想做的是在调用res.partner的create函数之前,将departmentid添加到“值”字典中。谢谢

类ResPartner(models.Model): ... department_id = field.Many2one('hr.department','Department')

2 个答案:

答案 0 :(得分:0)

签出此代码。

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

       @api.model
       def create(self, vals):
          if self.department_id:
               vals['department_id'] = self.department_id

          return super(ResPartner, self).create(vals)

答案 1 :(得分:0)

我了解您想在创建用户时创建具有某些部门价值的合作伙伴。为此,您必须提及用户部门。您必须像在合作伙伴中一样在部门用户中创建一个新字段'department_id'。并在合作伙伴创建函数中编写以下代码

@api.model
def create(self,vals):
    if vals.get('user_id',False):
        user_id = self.env['res.users'].browse(vals.get('user_id',False))
        vals.update({'department_id': user_id.department_id and user_id.department_id.id or False})
    return super(ResPartner, self).create(vals)

编辑1: 请在res用户中创建一个新字段,如下所示:

department_id = field.Many2one('hr.department', related="partner_id.department_id", 'Department')

然后,您只需避免创建函数。此字段声明可以解决您的问题,还可以从res用户表单视图中选择一个部门。