从one2many XML Odoo字段中删除或隐藏列



我有一个one2many字段(product_pricelist_item_ids)类型的product.pricelist.item使用在product.template的形式视图

我试过了:

invisible = "context.get ('product_variants_without', False)"

在父字段中传递上下文:

<field name = "product_pricelist_item_ids" widget = "one2many" context = "{'product_variants_without': product_variants_without}">

但它不能隐藏你!

我试过了:

attrs = "{'required': [('applied_on', '=', '0_product_variant')], 'invisible': [('product_variants_without', '=', True)]}"

:

attrs = "{'required': [('applied_on', '=', '0_product_variant')], 'invisible': [('product_variants_without', '=', [])]}"

我也读到你只能使用invisible="context.get...隐藏列,但上下文不适合我,因为我没有得到任何信息,任何建议或指南?代码的xml:

<field name="product_pricelist_item_ids" widget="one2many"  context="{'product_variants_without': product_variants_without}">
<tree string="Descuentos" editable="bottom" multi_edit="1" >
<field name="product_id"
groups="product.group_product_variant"
invisible="context.get('product_variants_without', False)" //I don't have the context
readonly="context.get('active_model')=='product.product'"
attrs="{'required': [('applied_on', '=', '0_product_variant')], 'invisible': [('product_variants_without', '=', True)]}" //not work
domain="['|', '|',
('id', '=', context.get('default_product_id', 0)),
('product_tmpl_id', '=', parent.id),
('categ_id', '=', context.get('default_categ_id', 0)), '|', ('company_id', '=', company_id), ('company_id', '=', False)
]"
options="{'no_create_edit':1, 'no_open': 1, 'no_create': True}"
/>
</tree>
</field>

您必须从Actions(从任何级别)传递context,然后您获得该字段的上下文,它将基于值执行,

例子——行动——销售团队

<record id="sales_team.crm_team_salesteams_act" model="ir.actions.act_window">
<field name="context">{'in_sales_app': True}</field><!-- Context is Pass here from Action-->
</record>

从这里传递上下文,所以你可以尝试相同的contextproduct_variants_without从产品动作和内部的表单视图,你有o2m fields,所以得到上下文和隐藏/显示。

<field name="product_pricelist_item_ids" invisible="context.get('product_variants_without', True)"/>