如何将域应用于按钮?
问题描述:
我想通过一个默认域从一个按钮应用到目标操作。
事情是这样的:如何将域应用于按钮?
<!-- 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',
}
意外行为自带的方式,我在做它是路径不保留对像动作按钮上一个窗口的作用:
我希望它留样:
那怎么可以实现?
答
我不太清楚你想要做什么,但在这里我们去:
如果你想打开另一个视图显示了所有记录,其中field_x = self.id
使用'search_default_field_x': self.id
在你行动的背景下。这应该通过搜索集打开您的视图,查找field_x
等于self.id
的每个记录。您可能需要定义一个搜索视图,该搜索视图能够在field_x
上进行搜索才能正常工作(如果该视图不在视图中,则default
不会填充该字段)。
我认为这回答了您的标题和问题的第一部分的问题。
如果你不想打破面包屑:
窗口操作(ir.actions.act_window)
目标(可选)是否应在主要内容 区域(当前),全屏模式(全屏)或对话框/弹出窗口 (新增)中打开视图。使用main而不是current来清除面包屑。默认 为当前值。
因此,尝试使用current
而不是new
,它应该做你想做的事情。至少,它适用于我为我公司编写的一些代码,但这是针对odoo 8的。由于这是默认设置,因此这是它在第一个代码段中的作用原因。
答
你应该试试以下。
<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>
您可以在行动中使用上下文设置默认搜索值。有关更多 的详细信息,请参阅项目模块并在项目模块中参考“任务” 按钮。你想在这里做的是一样的。