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

How to filter Many2one value depend another field?

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

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

现在我的请求是在合同中,我只想要合同中的合同

例如,如果我选择 Contrat 01 only ligne in Contrat 01 这样

这是我的代码:

您可以在 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 输入的内容匹配的记录。

如果您愿意,@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 视图中添加域。