Как отфильтровать значение Many2one зависит от другого поля? - PullRequest
0 голосов
/ 14 ноября 2018

пожалуйста, у меня есть пользовательский модуль, здесь есть захват:

enter image description here

затем я иду в Заказ на продажу и изменяю модуль sale.order.line, добавляю несколько полей в связи с моим пользовательским модулем

enter image description here

Теперь мой запрос находится в контенте ligne. Я хочу, чтобы в контенте были только ligne

например, если я выберу Контраст 01 только линь в Контраст 01 как этот

enter image description here

вот мой код:

enter image description here

enter image description here

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

То, что сделал @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-представлении.

0 голосов
/ 14 ноября 2018

Вы можете использовать домен в определении поля в вашем 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 в этой строке.

...