选择框的种群基于其他选择框

时间:2015-09-29 10:02:26

标签: openerp odoo odoo-8 openerp-8

美好的一天!我有一个问题我试图填充一个选择框基于另一个选择框上的选定数据这里是我的代码

的.py

licensetype = fields.Many2one('hr.licensetype','License Type')
license = fields.Many2one('hr.license','License')

@api.one
@api.onchange('licensetype')
def getlicense(self):
    if len(self.licensetype) > 0:
        mdlLicense= self.env['hr.license'].search([('license_name', '=', int(self.licensetype[0]))])
        #raise Warning(mdlLicense.ids)
        self.license = mdlLicense.ids

但仍然会根据所选的许可证类型填充我想要填充许可证的所有许可证。这是在Odoo8

1 个答案:

答案 0 :(得分:2)

<强>域

域是一个标准列表,每个标准是(field_name,operator,value)的三元组(列表或元组)。

在这里,

  • field_name : 它是字符串类型,必须使用membership(。)点运算符从当前模型或任何关系遍历字段到Many2one / One2many字段。

    - 运算符:用于将字段值与传递值进行比较。 有效的运营商列表(&gt;,&gt; =,&lt;,&lt; =,=,!=,=?,ilike,like = like,= ilike,不喜欢,不是ilike,childs_of,in,not in )

  • :用于与字段值进行比较。

可以使用三个逻辑运算符连接多个条件。 逻辑AND,逻辑OR,逻辑NOT。

详细了解domain

您可以通过为该字段定义域来轻松实现此目的,无需编写任何额外代码。

只需将域放入xml代码即可。

<field name="licensetype" />
<field name="license" domain="[('licensetype','=',licensetype)]" />

注意

请记住, hr.license hr.licensetype 之间必须存在关联。 licensetype必须是 hr.license 中的Many2one。

它会产生你想要的效果。