我有以下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
只需将字段添加到表单视图中,因为正如我所说,这是一个客户端操作,它不会调用服务器来知道您需要传递它的该字段的值是多少。