微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据选择字段更改 Many2one 域

如何解决根据选择字段更改 Many2one 域

我想根据选择字段中的用户选择更改 M2O 字段域:

  @api.onchange('search_by')
  def _get_partner(self):
        partners  = self.env['customer.regist'].search([('name','!=','New')])
        partner_list = []
        partner_list2 = []
        for rec in partners:
            partner_list.append(rec.name)
            partner_list2.append(rec.phone)
        res = {}
        if self.search_by == 'code':
            res['domain'] = {'search_value': [('name','in',partner_list)]}
        if self.search_by == 'phone':
            res['domain'] = {'search_value': [('phone',partner_list2)]}
        return res

但域没有改变并从模型中获取认域

解决方法

像这样改变你的函数。

@api.onchange('search_by')
  def _get_partner(self):
        partners  = self.env['customer.regist'].search([('name','!=','New')])
        partner_list = []
        partner_list2 = []
        for rec in partners:
            partner_list.append(rec.name)
            partner_list2.append(rec.phone)
        res = {}
        if self.search_by == 'code':
            domain = {'search_value': [('name','in',partner_list)]}
        return {'domain': domain}
        if self.search_by == 'phone':
            domain = {'search_value': [('phone',partner_list2)]}
        return {'domain': domain}

,

尝试这样做:

@api.onchange('search_by')
def _get_partner(self):
    partners  = self.env['customer.regist'].search([('name','New')])
    partner_list = []
    partner_list2 = []
    for rec in partners:
        if rec.name :
            partner_list.append(rec.name)
        if rec.phone:
            partner_list2.append(rec.phone)
    res = {}
    if self.search_by == 'code':
        res['domain'] = {'search_value': [('name',partner_list)]}
    if self.search_by == 'phone':
        res['domain'] = {'search_value': [('phone',partner_list2)]}
    return res

确保永远不会将“假”值添加到域中,因为它可能会给出无效结果

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。