2017-08-10 42 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 
相关问题