2017-01-26 114 views
0

我正在重構一個模型(我們稱之爲Parent),它存儲引用同一模型(Child)的記錄的許多Many2one字段。 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定義的一種特殊形式的看法,但我不知道如何將其插入到notebook頁面Parent看法。由於可以在表單中插入樹視圖(比如One2many字段),我想也應該有一種方法可以用表單來完成。如何實現這一效果的例子將不勝感激。

請忽略任何語法錯誤,以上只是一個簡單的視覺表示,以幫助更好地描述我的情況。

回答

1

可以使用widget屬性,以指定窗口小部件,以你的關係領域,例如

<field name="my_field" widget="my_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給您的字段添加一個widget元素,定義該小部件,指定該小部件在模板上工作並創建包含您的視圖的模板。

+0

感謝您的意見,喬治。我希望有一個更直接的方式來做到這一點,但這似乎是一種應該起作用的方法。我會在有機會的時候嘗試一下,如果我能做到的話,會在這裏發佈示例以供參考。 – dgeorgiev

相關問題