2017-08-08 71 views
2

我想通過一個默認域從一個按鈕應用到目標操作。
事情是這樣的:如何將域應用於按鈕?

<!-- action --> 
<act_window id="action_target" 
      name="Project Categories" 
      res_model="addon.model" 
      view_mode="kanban,tree,form"/> 

<!-- button --> 
<button class="btn btn-primary" 
     type="action" 
     name="%(action_target)d" 
     domain="[('field_x', '=', self.id)]"> 
    Do Something 
</button> 

我這樣做是正確的,現在的方式是通過觸發打開一個新的操作窗口的功能:

@api.multi 
def action_target(self): 
    self.ensure_one() 
    return { 
    'type': 'ir.actions.act_window', 
    'src_model': self._name, 
    'res_model': 'addon.model', 
    'view_mode': 'kanban,tree,form', 
    'domain': [('field_x', '=', self.id)], 
    'target': 'main', 
    } 

意外行爲自帶的方式,我在做它是路徑不保留對像動作按鈕上一個窗口的作用:

enter image description here

我希望它留樣:

enter image description here

那怎麼可以實現?

回答

1

我不太清楚你想要做什麼,但在這裏我們去:

如果你想打開另一個視圖顯示了所有記錄,其中field_x = self.id

使用'search_default_field_x': self.id在你行動的背景下。這應該通過搜索集打開您的視圖,查找field_x等於self.id的每個記錄。您可能需要定義一個搜索視圖,該搜索視圖能夠在field_x上進行搜索才能正常工作(如果該視圖不在視圖中,則default不會填充該字段)。

我認爲這回答了您的標題和問題的第一部分的問題。

如果你不想打破面包屑:

基於odoo 10.0 documentation

窗口操作(ir.actions.act_window)

目標(可選)是否應在主要內容 區域(當前),全屏模式(全屏)或對話框/彈出窗口 (新增)中打開視圖。使用main而不是current來清除麪包屑。默認 爲當前值。

因此,嘗試使用current而不是new,它應該做你想做的事情。至少,它適用於我爲我公司編寫的一些代碼,但這是針對odoo 8的。由於這是默認設置,因此這是它在第一個代碼段中的作用原因。

1

你應該試試以下。

<record id="action_target" model="ir.actions.act_window"> 
    <field name="name">Project Categories</field> 
    <field name="res_model">addon.model</field> 
    <field name="view_mode">kanban,tree,form</field> 
    <field name="context">{ 
     'search_default_field_x': [active_id], 
     'default_field_x': active_id, 
     } 
    </field> 
</record> 

您可以在行動中使用上下文設置默認搜索值。有關更多 的詳細信息,請參閱項目模塊並在項目模塊中參考「任務」 按鈕。你想在這裏做的是一樣的。