2017-08-10 30 views
0

我有三類:設置上取決於另一場FormView控件的值的字段域:Odoo 10

class My_module_C(models.Model): 
    _name = 'mymodule.c' 
    name = fields.Char(description="Name") 


class My_module_B(models.Model): 
     _name = 'mymodule.c' 
     name = fields.Char(description="Name") 
     field_c_ids = fields.Many2many('mymodule.c') 



class My_module_A(models.Model): 
      _name = 'mymodule.a' 
      field_c_id = fields.Many2one('mymodule.c') 
      field_b_id = fields.Many2many('mymodule.b') 

在ModuleA FormView控件&之後,用戶選擇「field_c_id」,我需要過濾「field_b_id」,以便只顯示'mymodule.a.field_c_id'在'mymodule.b.field_c_ids' 我知道我必須@ api.onchage('fieldc_id'),但我不知道如何返回一個域名並將其應用於現場,有何幫助?

編輯: 我找到了解決辦法,那就是:加入域在XML文件中的字段:

domain=" [('field_c_ids.id', '=', field_c)]" 

但嚴重的是我不知道如何在邏輯上的工作,我寧願把:

domain=" [(field_c, 'in', 'field_c_ids.ids')]" 

有人可以向我解釋它是如何工作的嗎?

回答

0

您可以通過這種方式動態應用域名。

@api.multi 
@api.onchange('field_c_id') 
def onchange_field_c(self): 
    res = {} 
    if self.field_c_id: 
     domain = {'field_b_id': [('field_c_ids', 'in', self.field_c_id)]} 
     return {'domain': domain} 
    return res 
相關問題