繁体   English   中英

根据formView: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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM