context 如何在视图中使用场景
上一篇文章,我们讨论了在py文件中使用context的问题。
今天我来讨论一下。在XML视图中的使用情况 :
在 Odoo 中,视图可以用来定义用户界面。在视图中,你可以使用 context 来改变字段的默认值或者控制字段的可见性。
下面是一些在视图中使用 context 的例子:
- 设置字段的默认值:
在视图中,你可以使用 context
属性来设置字段的默认值。这个属性应该是一个字典,包含你想要设置的默认值。
例如,如果你想要在创建新的合作伙伴时,默认将 'is_company' 字段设置为 True,你可以在视图中这样做:
<record id="view_partner_form" model="ir.ui.view"> <field name="name">res.partner.form</field> <field name="model">res.partner</field> <field name="arch" type="xml"> <form string="Partner"> ... <button name="%(base.action_res_partner_form)d" type="action" string="New Partner" context="{'default_is_company': True}"/> ... </form> </field> </record>
在这个例子中,当用户点击 "New Partner" 按钮时,将打开一个新的合作伙伴表单,其中 'is_company' 字段的默认值将被设置为 True。
- 控制字段的可见性:
在视图中,你也可以使用 context 来控制字段的可见性。具体来说,你可以使用 attrs
属性来根据 context 中的某个值显示或隐藏字段。
例如,如果你想要在当前用户是管理员时显示一个字段,你可以在视图中这样做:
<record id="view_partner_form" model="ir.ui.view"> <field name="name">res.partner.form</field> <field name="model">res.partner</field> <field name="arch" type="xml"> <form string="Partner"> ... <field name="vat" attrs="{'invisible': [('context_is_admin', '=', False)]}"/> ... </form> </field> </record>
在这个例子中,'vat' 字段只有在 'context_is_admin' 的值为 True 时才可见。'context_is_admin' 应该是在某个地方(比如在动作或者在服务器端的方法中)设置到 context 中的。
需要注意的是,在视图中使用 context 需要谨慎,因为这可能会使你的代码更难理解和维护。你应该尽量避免在视图中添加复杂的逻辑,尤其是那些依赖于 context 的逻辑。