在search_count条件中添加了many2many字段后,我收到了预期的单例错误。
该结构由3个类组成,即工作,位置和员工。我要做的是在每个地点获得每份工作的员工人数。
这与xml中的many2many小部件一样正常工作:
(排除了字符串参数)
class job(models.Model):
_inherit = 'hr.job'
rel_locations = fields.Many2many(comodel_name='hr.locations')
num_location_employees = fields.Integer(compute='_set_location_employees')
def _set_location_employees(self):
for rec in self:
rec.num_location_employees = self.env['hr.employee'].search_count([('locations', '=', 3)])
它为我提供了一份工作清单,其中包含位于ID为3的员工人数。
但是,将id改为3后
('locations', '=', rec.rel_locations.id)
我得到了
预期单身人士:hr.locations(3,4)
这是必要的位置类
class locations(models.Model):
_name = 'hr.locations'
employee = fields.One2many(comodel_name='hr.employee', inverse_name='locations')
rel_jobs = fields.Many2many(comodel_name='hr.job')
name = fields.Char(...)
我对此仍然很陌生,任何帮助都将不胜感激。提前谢谢。
答案 0 :(得分:1)
像这样:
('locations','in',rec.rel_locations.ids)
让我知道它是否有效。
答案 1 :(得分:0)
您只能使用点符号(。)来访问单个记录,并且您有多个记录。检查说明字段访问权限的部分documentation
尝试在多个记录上读取或写入字段会引发一个 错误。
rec.rel_locations是一个ORM one2many,包含2个hr.locations模型的记录。您首先获取每个记录的ID,然后像这样创建您的域:
(' locations',' in',[rel_location_id1,rel_location_id2])
有关更多信息,请查看我发布的文档部分以及: