簡體   English   中英

根據many2one字段的條件設置one2many列表顯示的過濾器? (奧多 13)

[英]Set the filter for one2many list showing based on the condition of many2one field? (Odoo 13)

我試圖根據 many2one 字段的條件為 one2many 列表顯示設置過濾器。

模型_a.py:

 name = fields.Many2one('hr.employee')
 keya = fields.Many2one('model.b')
 num_a = fields.Monetary()

模型_b.py:

 name = fields.Many2one('hr.employee')
 o_2_m = fields.One2many('model.a', 'keya', string='one2many list will be filter base on num_c')
 value_c = fields.Many2one('model.c', string='Value of C', required= True)

模型_c.py:

 _rec_name = "code_c"
 code_c = fields.Char('Code', required= True)
 num_c = fields.Monetary()

默認情況下,如果用戶不會 select 記錄 value_c,one2many 列表將顯示所有記錄。

如果用戶通過 value_c 字段選擇記錄,該字段已創建包含 num_c 的值,則將根據 num_c 的值過濾 one2many 列表以顯示。

例如:如果 one2many 字段中的num_a為:15

那么當用戶填寫num_c字段時也是:15

然后 one2many 列表只顯示所有具有值的記錄:15

這是 one2many 列表過濾器的關鍵條件。

我在model_b.py中嘗試過這些代碼:

 @api.onchange('value_c')
 def onchange_value_c(self):
    for rec in self:
       if rec.value_c and rec.o_2_m:
          for line in rec.value_c:
             find_c = self.env["model.c"].search([('num_c', '=', line.num_c)])
             find_a = self.env["model.a"].search([('num_a', '=', line.num_a)])
             #compare value of num_c with num_a
             if find_c.num_c == find_a.num_a:
                 for abc in rec.o_2_m:
                    return {'domain': {'o_2_m': [('num_a','=', abc.find_a.id)]}}

但它仍然不起作用。 在選擇 value_c 的記錄並單擊“添加行”鏈接后,它仍然顯示所有 one2many 列表的記錄。

請幫忙!

謝謝!

最后,我解決了我的要求。 在 model_b.py 中使用 onchange function,如下所示:

@api.onchange('value_c') 
def onchange_get_value_c(self): 
  for rec in self: 
     if rec.value_c:
        for line in rec.value_c: 
            find_c = self.env["model.c"].search([('num_c', '=', line.num_c)])

            if find_c:
                 return {'domain': {'o_2_m': [('num_a','=', find_c.num_c)]}}

當用戶選擇在字段 'num_c' 中具有值的 many2one 'value_c' 字段時,它工作正常,然后當單擊“添加一行”鏈接時,它將顯示在字段 'num_a' 中具有值的所有記錄匹配或等於到字段“num_c”中的值。 如果用戶選擇了 many2one 'value_c' 字段但未設置字段 'num_c' 的值,或者該值不匹配或等於字段 'num_a' 中的值。 然后當點擊“添加一行”鏈接時,它不會顯示任何內容,並提出通知。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM