在 OpenERP 中,如何从父级(Many2One 对象)中显示或隐藏基于域的字段

Posted

技术标签:

【中文标题】在 OpenERP 中,如何从父级(Many2One 对象)中显示或隐藏基于域的字段【英文标题】:In OpenERP, How to show or hide a field based on Domain from its Parent (Many2One Object) 【发布时间】:2013-10-30 12:17:57 【问题描述】:

在 OpenERP 版本 7 中,我需要根据父对象的值在“添加对象”的表单视图中显示或隐藏一个字段。

例如,我在 sale_order 中有一个字段 demo_field1。创建销售订单行时,如果销售订单的 demo_field1 大于 200,我不想显示字段“th_weight”。

使用 attrs="'invisible': [('demo_field', '>', '200')]" 或 attrs="'invisible': [('order_id.demo_field', '>', '200')]" 显示域中的无效字段

如何做到这一点?

【问题讨论】:

【参考方案1】:

我之前也遇到过同样的问题。我所做的是在 sale_order_line 中添加一个相关字段并根据该相关字段定义属性。 IE; 在销售订单行中,我将字段 demo_field1 的相关字段定义为:

'test_field_new': fields.related('order_id', 'client_order_ref', string="Test Field", type="float")

但相关字段只会在保存记录时加载。所以我将 xml 文件中字段 test_field_new 的默认值传递为:

<field name="order_line" context="'default_test_field_new': demo_field1"/>

这样当我在 one2many 字段中单击“添加新项目”时,字段 demo_field1 的值将默认加载到 test_field_new,并且我使用字段 test_field_new 定义了属性。

<field name="price_unit" attrs="'invisible': [('test_field_new', '&gt;', 200)]"/>

我不确定这是一种干净的方法......

【讨论】:

你好,访问这个 [forum.openerp.com/forum/topic15461.html],希望这能帮助你理解上下文和属性。 嗨,我认为你提到的链接是关于旧版本的 OpenERP。但在 OpenERP 7 中,我们可以使用上下文设置字段的默认值。

以上是关于在 OpenERP 中,如何从父级(Many2One 对象)中显示或隐藏基于域的字段的主要内容,如果未能解决你的问题,请参考以下文章

Fancybox iframe 内容 - 如何从父级访问 CSS?

如何从父级修改组件的样式?

如何使用Vue从父级中的多个子组件中获取值?

如何在 .NET Core 中使用默认依赖注入从父级创建子范围?

如何从父级中删除 QObject

React Native - 如何从父级获取 FlatList 项的值