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

时间:2018-03-16 02:56:04

标签: odoo odoo-10 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=...,则可以正常使用。

1 个答案:

答案 0 :(得分:1)

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

res.partner

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

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

注意:如果表单视图是<page string="foo" name="foo" attrs="{'invisible': [('is_customer', '=', False),]}"> <field name="is_customer" invisible="1"/> <span>Foo2</span> </page> ,只需将字段添加到表单视图,因为正如我所说的客户端操作,它不会调用服务器来知道您需要的字段的值是什么通过它。