2016-05-27 3 views
1

私はOne2manyビューでアイテムの追加によって呼び出されたときexempleため、many2oneフィールドを非表示にしたいと思います:親ビューで「アイテムを追加」するとフォームが呼び出されたときにMany2Oneを見えなくするにはどうすればいいですか?

parent view : 
    Name = 'this is One2many field' 
    value 1 = 
    value 2 : add an item 

child view : 
    Parent Name = 'this is Many2one field' 
    value 1 = .... 

とi「は項目を追加」をクリックしたときに私が取得したいのですがfolowingビュー:

child view : 
    value 1 = ... 

は、私が子ビューでattrs="{'invisible':[('parent_id', '!=', False)]}"を設定しようとしましたが、親フィールドがまだ作成されていないので、これは常に真です。何か案が ?

答えて

1

このone2manyフィールドのインラインフォームビューを定義することで、これを実現する方法は非常に簡単です。

参考のための例です。

<field name="one2many_field_name"> 
    <tree> 
     <field name="field1" /> 
     <field name="field2" /> 
     <field name="field3" /> 
    </tree> 
    <form> 
     <field name="field1" invisible="1" /> 
     <field name="field2" /> 
     <field name="field3" /> 
    </form> 
</field> 

あなたはそれをインラインで定義された後、定義されたインライン・ビューが存在しない場合、それはあなたが外部で作成したフォームのビューを取るフォームビューをレンダリングする「の項目を追加」をクリックしながら。

したがって、many2many/one2manyフィールドのインラインビューを定義することができます。この方法で、任意のフィールドの動作を直接定義できます。

+0

を追加するときに、ツリーにmany2oneフィールドを表示する必要はありませんよりも、編集可能な

<tree editable="top"> 

ツリーが、それはこれが自動にモデルのIDを取る作る非常に簡単である場合私が必要としていただけで、私はOne2manyフィールドでインラインでビューを定義できることは知らなかった。ありがとうございました :) –

1

親フォームビューのone2manyフィールドにコンテキストを設定することで実現できます。

例で説明します。 placement_lineは親ビューone2manyフィールドです。その中で、以下のコードのようなコンテキストを設定します。ここで

<field name="placement_line" context="{'one2many':True}" /> 

STUDENT_IDはmanyone子フォームビューのフィールドです。下記のコードを参照してください。あなたの親フォームと子で上記のコードのように設定することで

<field name="student_id" invisible="context.get('one2many')"/> 

を形成することができます目に見えない子フィールド(many2one)ときOne2manyビューで「アイテムを追加」から開いた子フォーム。

0

フォームはあなたがアイテム

関連する問題