2017-01-26 8 views
0

同じモデル(Child)のレコードを参照するMany2oneフィールドを多数格納するモデル(リテールコールParent)のリファクタリングが進行中です。 Parentフォームビューは、notebookを含み、それぞれpageは、特定のChildの詳細を表示します。これは現在、pageに繰り返し記載されており、多くの関連フィールドがあります。私は、ビューの繰り返しを避け、関連分野の必要性を取り除こうとしています。Odoo 8:Many2oneフィールドのネストされたフォームビュー

class Child(models.Model): 
    _name = "child" 

    # ... 

class Parent(models.Model): 
    _name = "parent" 

    child_1 = fields.Many2one('child', 'Child 1') 
    child_1_age = fields.Float(related='child_1.age', string='Child Age') 
    # ... 
    child_2 = fields.Many2one('child', 'Child 2') 
    child_2_age = fields.Float(related='child_2.age', string='Child Age') 
    # ... 


<!-- ... --> 
<field name="model">parent</field> 
<field name="type">form</field> 
<field name="arch" type="xml"> 
    <notebook colspan="8" col="8"> 
     <page> 
      <!-- buttons, a bunch of related Child fields, etc --> 
     </page> 
     <page> 
      <!-- buttons, a bunch of related Child fields, etc --> 
     </page> 
    </notebook> 
</field> 

私はChild用に定義された特殊な形式のビューを持っているが、私はParentビューのnotebookページに挿入する方法がわかりません。フォームにツリービューを挿入することは可能です(例えば、One2manyフィールドのように)、私はフォームでもそれを行う方法がなければならないと思います。どのようにこの効果を達成するための例は非常に認められるでしょう。

文法上の誤りは無視してください。上記は私の場合をよりよく説明するのに役立つ単純な視覚的表現です。

答えて

1

次の例を見てみましょうウィジェットが動作し、作成された方法として例を参照するには例えば

<field name="my_field" widget="my_widget"/> 

、リレーショナルフィールドにウィジェットを割り当てるためにwidget属性を使用することができます:

addons/account/project/wizard/account_analytic_journal_report_view.xmlにアクセスし、many2many_tagsウィジェットを定義する行を参照してください。

は、このフォームウィジェットは、そのウィジェットテンプレートを持っている、Registry of form fields ...

私たちは実際のウィジェットを割り当てられている使用many2many_tags文字列をコメントの周りにライン6396でaddons/web/static/src/js/view_form.jsに割り当てられ、そのテンプレートは、あなたのフィールドの代わりにレンダリングされます。

TL; DRフィールドに要素を指定し、そのウィジェットを定義し、そのウィジェットをテンプレートに割り当てて、ビューを含むテンプレートを作成します。

+0

入力いただきありがとうございます。私はそれを行うより簡単な方法を望んでいましたが、これはうまくいくはずのアプローチのようです。私はチャンスを得たときにそれを試してみると、私はそれを動作させる場合は、参照のためにここに例を掲載します。 – dgeorgiev

関連する問題