如何在 One2many 字段的 onchange 函数中添加域

问题描述 投票:0回答:1

了解情况 我有以下 2 个型号。我添加了一个基于 'requirement_id' 的 onchange 函数。我想在 request_id 的 panel_id 字段中添加域过滤器。有可能吗?我的 onchange 函数以这种方式不起作用

class PanelVendorAssignment(models.Model):
    ​_name = "panel.vendor.assignment"
    ​requirement_id = fields.Many2one('hr.job', string='Requirement')
    ​panel_vendor_assignments_ids = fields.One2many(
        string='Vendor', comodel_name='panel.vendor.assignment.line',
        inverse_name='panel_vendor_assignment_id', tracking=True)

    ​@api.onchange('requirement_id')
    ​def _onchange_panel_stage(self):
    ​   ​if self.requirement_id:
    ​   ​   ​panel_stage_ids = self.env['panel.time.slot.availability'].sudo().search(
            [('requirement_id', '=', self.requirement_id.id),('status', '=', 'open')])
            ​   ​for rec in panel_stage_ids:
    ​   ​   ​   ​domain = [('id', '=', rec.panel_user_id.id)]
                ​   ​return {'domain': {'panel_vendor_assignments_ids.panel_id': domain}}

class PanelVendorAssignmentLine(models.Model):
    ​_name = 'panel.vendor.assignment.line'
    ​panel_vendor_assignment_id = fields.Many2one(comodel_name='panel.vendor.assignment', ondelete='cascade')
    ​panel_id = fields.Many2one(comodel_name='res.partner',required=True,)

odoo onchange odoo-15
1个回答
0
投票

不,你不能那样做。

您的代码也有一些错误覆盖域的值,因此您将返回最后一个域而不是每个记录域

您可以做的是计算 o2m 中每条记录的域并将其保存在另一个字段中,以供 panel_id 字段在本地使用

要保存域,您可以使用二进制字段或使用此模块:

https://github.com/OCA/web/tree/15.0/web_domain_field

© www.soinside.com 2019 - 2024. All rights reserved.