首页 > 解决方案 > 从 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>

标签: xmlodooqweb

解决方案


您必须通过contextfrom Actions(from anylevel) 然后您获得该字段的上下文,它将根据值执行,

示例 - 行动 -销售团队

<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>

从这里它传递上下文,因此您可以尝试与 Product Actions中的context product_variants_withouto2m fields相同的操作,并在您拥有的表单视图中获取上下文并进行隐藏/显示。

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

推荐阅读