与另一个模型相关的Many2many字段

时间:2019-08-13 11:41:14

标签: python odoo odoo-12

我试图在 Contact 模型中创建一个many2many字段,该字段始终具有与 Users 模型中的company_ids相同的值。

我一直在寻找辅助词,但是odoo docs关于这个主题的句子只有两句话,因此无法明确解释。 其他来源似乎与自己矛盾,因为有些人说相关的存储字段未更新,而另一些人则说这样做。

毕竟我不知道自己创建一个人的语法,因为dosc的编写太差了。

我有这段代码:

# -*- coding: utf-8 -*-

from odoo import models, fields, api

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

    company_ids = fields.Many2many(comodel_name='res.company', string='Related users Allowed companies', readonly=True)

它正在 Contact 模型内创建字段,现在我需要填写一些内容。最好不使用onchange方法或自动动作(我现在有自动动作-通过开发人员UI创建)。 / p>

1 个答案:

答案 0 :(得分:2)

只需在创建或编辑用户记录后在合作伙伴记录中设置字段

      __inherit = 'res.users'


      @api.model
      def create(self, vals):
        res = super(TheClassName, self).create(vals)
        res.partner_id.company_ids = res.company_ids
        return res


      @api.multi
      def write(self, vals):
          super(TheClassName, self).write(vals)
          # if we edited company_ids we edit partners too
          if 'company_ids' in vals:
            # use mapped to call write one time good for performance
            self.mapped('partner_id').write({'company_ids': vals['company_ids']})
          return True

因此,当您在用户中编辑company_ids时,对相关合作伙伴也要进行同样的操作。

这肯定适用于新用户,但我认为您需要处理现有用户 通过脚本或某种解决方案来填充字段。