使用 Odoo 开发人员界面使用来自另一个模型的值计算 many2many 字段

Compute many2many field with values from another model using Odoo developer interface

我需要在 Contact 模型中添加一个新字段,用于保存有关相关用户的 Allowed companies 的信息。

现在只有那个用户当前选择的公司的字段(我做记录规则还不够)。 我要从中复制值的字段位于模型 Users 内,它被称为 company_ids.

我正在尝试在开发者模式中添加此字段(设置 > 技术 > 字段),如下所示:

但是我在使用另一个模型的值填充我的字段的代码时遇到了问题。

for record in self:
  record[("x_company_ids")] = env['res.users'].company_ids

我猜 record 指的是 Contact 模型中的一条记录,它不包含来自其他模型的字段,例如 Users 。所以我不知道如何从另一个模型中引用一个字段。 类似于此:env['res.users'].company_ids?

对我来说更难,因为它是 many2many 字段并且应该在源更改时始终更新。

也许更好的解决方案是使用自动操作将值写入该字段?

我看到了一些这样的帖子:Computed many2many field dependencies in Odoo 10。 但在那些情况下,它们似乎在字段之间有明确的联系,而我没有。当我在联系人模型中时,我不知道如何获得相关用户。我只知道如何使用这种相反的方式(从用户到联系人):user.partner_id.id

在下面给定的代码中,您没有指定您将从中获得 company_ids 的相关用户,您可以直接访问 company_ids

for record in self:
  record[("x_company_ids")] = env['res.users'].company_ids

你可以这样写:

for record in self:
  record["x_company_ids"] = self.env['res.users'].search([('partner_id','=',record.id)]).company_ids