在 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', '>', 200)]"/>
我不确定这是一种干净的方法......
【讨论】:
你好,访问这个 [forum.openerp.com/forum/topic15461.html],希望这能帮助你理解上下文和属性。 嗨,我认为你提到的链接是关于旧版本的 OpenERP。但在 OpenERP 7 中,我们可以使用上下文设置字段的默认值。以上是关于在 OpenERP 中,如何从父级(Many2One 对象)中显示或隐藏基于域的字段的主要内容,如果未能解决你的问题,请参考以下文章
Fancybox iframe 内容 - 如何从父级访问 CSS?