如何过滤Many2one值依赖另一个字段?

时间:2018-11-13 21:00:22

标签: odoo odoo-10

请给我一个自定义模块,这里是一个捕获内容:

enter image description here

然后我去销售订单并修改模块sale.order.line,添加一些与我的自定义模块相关的字段

enter image description here

现在我的请求是在ligne contra中,我只希望在ligne cont中

例如,如果我选择 Contrat 01 (仅在 Contrat 01 中像这样)

enter image description here

这是我的代码:

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:1)

您可以在XML的字段定义中使用域:

<field name="contrat_name_id"/>
<field name="contrat_lignes_id" domain="[('ligne_ids', '=', contrat_name_id)]"/>

这将过滤contrat_lignes_id以仅显示ligne_ids与您在该行上为contrat_name_id输入的内容匹配的记录。

答案 1 :(得分:1)

如果需要,@ djames所做的操作仅在此表单视图中有效 在您所有的sale.order.line视图中都使用python 为您完成这项工作。

 class bons_lines(model.Model):
      _inherit = 'sale.order.line'

      # your new fields
      ....
      ....


      @api.onchange('contrat_name_id')
      def onchange_contrat_name(self):
          if self.contrat_name_id:
              # add the domain
              self.contrat_lignes_id = False # force the user to reselect the contrat_lignes_id if he changes the contrat name
              return {'domain': {'contrat_lignes_id': [('ligne_ids', '=', self.contrat_name_id.id)]}}
          else:
              # remove the domain 
              return {'domain': {'contrat_lignes_id': []}}

这样,您不必在声明的每个XML视图中添加域。