2017-08-28 123 views
1

我有一些領域我展示我的One2many樹視圖:顯示/隱藏字段 - Odoo V8

<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

將它們置於不可見狀態而不是隻讀狀態,它不會顯示它們,它將像空列一樣。嘗試一下,告訴我 – dccdany

+0

嗨,不,它不工作,對不起,我以前嘗試過,這是一棵樹,不是一個「傳統」的樹 – NeoVe

+0

我見過這個invisible =「context.get('state ')=='下一個'「,不給我任何錯誤,但仍然沒有隱藏它,問題是one2many領域,我們會等待這個場景的一些暗示 – NeoVe

回答

1

我相當確定沒有辦法動態地隱藏One2many字段樹的整個列。您可以使用attrs動態地隱藏每行的列內容。在下面的情況下,如果該行具有「示例」的名稱,則在處於草稿狀態時它將顯示爲空白單元格。

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

如果你真的必須展現出不同的One2many樹視圖,那麼你可以嘗試在視圖中使用多場/樹的定義和使用attrsOne2many領域本身就像這樣:

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

我不確定這是否可以滿足您的需求,但這是我能想到的最接近解決方案。

+0

這樣的事情正是我在做什麼,是的,AFAIK沒有辦法dinamiically隱藏他們如此我正在爲我的項目使用與此類似的東西,隱藏在狀態的基礎上,就是這樣。無論如何非常感謝你。 – NeoVe