【问题标题】:Odoo 10 - QWeb hide a view element if a field is FalseOdoo 10 - 如果字段为 False,QWeb 隐藏视图元素
【发布时间】:2018-03-16 02:56:04
【问题描述】:

我有以下 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=... 它可以正常工作。

【问题讨论】:

    标签: odoo odoo-10 qweb


    【解决方案1】:

    即使您没有提供错误消息,但这仅适用于 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,只需将字段添加到表单视图,因为正如我所说的是客户端操作它不会调用服务器来知道您需要传递的该字段的值是什么它。

    【讨论】:

    • Cherif, @bhavesh-odedra 查看已编辑的问题,仍然无法正常工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多