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

Many2many field related to another model

我正在尝试在 Contact 模型中创建一个 many2many 字段,它与 Users[= 中的 company_ids 具有相同的值26=] 模型在任何时候。

我正在寻找答案,但 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).

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

      __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 时,您也会为相关合作伙伴做同样的事情。

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