我试图在 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>
答案 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
时,对相关合作伙伴也要进行同样的操作。
这肯定适用于新用户,但我认为您需要处理现有用户 通过脚本或某种解决方案来填充字段。