在One2many树上显示/隐藏字段 - Odoo v8

时间:2017-08-28 17:07:37

标签: python openerp odoo-8

我在One2many树视图中显示了一些字段:

  <page string="Budget Lines Planned">
            <field name="account_budget_bsi_line" colspan="4" nolabel="1" attrs="{'readonly':[('state','!=','draft')]}">
                <tree string="Budget Lines Planned" editable="bottom" >
                    <field name="opening_stock"/>
                    <field name="sales_planned" />
                    <field name="amount_total"/>
                    <field name="interauxiliary_transfers_planned" />
                    <field name="interauxiliary_receipts_planned" />
                    <field name="prod_purchased_planned" />
                    <field name="closing_stock_planned" />
                </tree>
            </field>
    </page>

这来自自定义模块,该模块具有状态工作流,即:draft, approved, next, done等。

假设在next州,我想要隐藏opening_stock字段,并显示其他字段。

我知道这可以通过使用attrs="{'readonly':[('state','!=','draft')]}"或隐形或其他方式在表单上实现。

但似乎并不适用于One2many树视图,因此,在这种情况下如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

我相当确定无法动态隐藏One2many字段树的整个列。您可以使用attrs动态隐藏每行的列内容。在下面的情况中,如果该行的名称为&#34;示例&#34;,那么当它处于草稿状态时它将显示为空白单元格。

<field name="opening_stock" attrs="{'invisible': [('state', '!=', 'draft')]}"/>

如果您确实必须显示不同的One2many树视图,那么您可以尝试在视图中使用多个字段/树定义,并使用attrs字段本身上的One2many

<field name="account_budget_bsi_line" attrs="{'invisible': [('state', '=', 'draft')]}">
    <tree>
        ...
        <field name="opening_stock"/>
        ...
    </tree>
</field>
<field name="account_budget_bsi_line" attrs="{'invisible': [('state', '!=', 'draft')]}">
    <tree>
        ...
        <!-- Exclude field opening_stock -->
        ...
    </tree>
</field>

我不确定这是否适合您的需求,但它是我能想到的最接近解决方案。