我有三个课程:
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.b.field_c_ids'中带有'mymodule.a.field_c_id'的记录 我知道我必须@ api.onchage('fieldc_id'),但我不知道如何返回一个域并将其应用于该字段,任何帮助?
编辑: 我找到了一个解决方案,即:在xml文件中添加字段的域:
domain=" [('field_c_ids.id', '=', field_c)]"
但严重的是我不知道这在逻辑上是如何工作的,我宁愿放下:
domain=" [(field_c, 'in', 'field_c_ids.ids')]"
有人可以向我解释它是如何运作的吗?
答案 0 :(得分: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