[英]how to set the value of the "x" field, depending on the "y" field from another model? Odoo-10
[英]Set a domain on a field depending on the value of another field in the 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.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')]"
有人可以向我解释它是如何工作的吗?
您可以通过这种方式动态应用域。
@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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.