Odoo 10 - 如果字段为 False,则 QWeb 隐藏视图元素



我有以下QWeb元素:

<record id="extended_res_partner" model="ir.ui.view">
    <field name="name">Extended View</field>
    <field name="inherit_id" ref="base.view_partner_form"/>
    <field name="model">res.partner</field>
    <field name="arch" type="xml">
            <notebook position="inside">
                <page string="Foo" name="foo" attrs="{'invisible': [('is_customer', '=', False),]}">
                    <field name="is_customer" invisible="1"/>
                    <span>Foo2</span>
                </page>
            </notebook>
    </field>
</record>

但它不起作用。我得到:

Field `is_customer` does not exist

如果我删除attrs=...它工作正常。

即使您没有提供错误消息,但这只有在表单视图的情况下才有效res.partner但我假设表单是另一个与res.partner有 many2one 关系的模型,在这种情况下,您需要在模型中创建一个相关字段。

partner_id = ......
is_customer = fields.Boolean(related='partner_id.is_customer', readonly=True)

然后,您需要将此字段添加到表单视图中,因为 attrs 是客户端功能,它需要表单中的值才能工作。

<page string="foo" name="foo" attrs="{'invisible': [('is_customer', '=', False),]}"> 
    <field name="is_customer" invisible="1"/>
    <span>Foo2</span>
</page>

注意:如果表单视图适用于res.partner只需将字段添加到表单视图中,因为正如我所说,这是一个客户端操作,它不会调用服务器来知道您需要传递它的该字段的值是多少。

最新更新