Odoo 13:act_window 代码中的操作忽略 search_view
Odoo 13: act_window action in code ignores search_view
我有一个智能按钮,它可以打开具有特定 search_view 的特定视图。
我在 xml 中为带有 view_id 和 search_view_id:
的智能按钮创建了一个动作
<button class="oe_stat_button" type="action" name="%(action_expert_positions)d" icon="fa-list-ol">
<field string="Positions" name="positions_count" widget="statinfo"/>
</button>
<record id="action_expert_positions" model="ir.actions.act_window">
<field name="name">Positions</field>
<field name="res_model">expert.position</field>
<field name="type">ir.actions.act_window</field>
<field name="view_mode">tree</field>
<field name="view_id" ref="project_expert_position_tree"/>
<field name="domain">[("project_id", "=", active_id)]</field>
<field name="search_view_id" ref="project_expert_position_tree_search"/>
<field name="context">{'default_project_id': active_id, 'search_default_project_phase_closed': 1}</field>
</record>
这个效果很好。它显示特定视图以及具有特定过滤器的搜索视图。
现在过滤器 (search_default_...) 应该根据父对象中的字段动态激活。
为此,我将智能按钮和 xml-action 更改为创建动作的函数,以便稍后添加动态:
<button class="oe_stat_button" type="object" name="get_positions" icon="fa-list-ol">
<field string="Positions" name="positions_count" widget="statinfo"/>
</button>
def get_positions(self):
self.ensure_one()
return {
'name': 'Positions',
'res_model': 'expert.position',
'type': 'ir.actions.act_window',
'view_mode': 'tree',
'view_id': self.env.ref('my_project.project_expert_position_tree').id,
'domain': [('project_id', '=', self.id)],
'search_view_id': self.env.ref('my_project.project_expert_position_tree_search').id,
'context': "{'default_project_id': active_id, 'search_default_project_phase_closed': 1}"
}
现在的观点是正确的,但是search_view不是特定的,它是默认的search_view。
我已经调试了该函数,可以确认在返回的 json.
中正确添加了搜索视图的 ID
有人可以帮我吗?
我在 github post:
中找到了解决方案
https://github.com/odoo/odoo/issues/66147
'search_view_id': (self.env.ref('my_project.project_expert_position_tree_search').id, ),
文档说“(id, name) 对,id 是要加载的特定搜索视图的数据库标识符”
https://www.odoo.com/documentation/12.0/reference/actions.html#window-actions-ir-actions-act-window
谢谢!
我有一个智能按钮,它可以打开具有特定 search_view 的特定视图。 我在 xml 中为带有 view_id 和 search_view_id:
的智能按钮创建了一个动作<button class="oe_stat_button" type="action" name="%(action_expert_positions)d" icon="fa-list-ol">
<field string="Positions" name="positions_count" widget="statinfo"/>
</button>
<record id="action_expert_positions" model="ir.actions.act_window">
<field name="name">Positions</field>
<field name="res_model">expert.position</field>
<field name="type">ir.actions.act_window</field>
<field name="view_mode">tree</field>
<field name="view_id" ref="project_expert_position_tree"/>
<field name="domain">[("project_id", "=", active_id)]</field>
<field name="search_view_id" ref="project_expert_position_tree_search"/>
<field name="context">{'default_project_id': active_id, 'search_default_project_phase_closed': 1}</field>
</record>
这个效果很好。它显示特定视图以及具有特定过滤器的搜索视图。
现在过滤器 (search_default_...) 应该根据父对象中的字段动态激活。 为此,我将智能按钮和 xml-action 更改为创建动作的函数,以便稍后添加动态:
<button class="oe_stat_button" type="object" name="get_positions" icon="fa-list-ol">
<field string="Positions" name="positions_count" widget="statinfo"/>
</button>
def get_positions(self):
self.ensure_one()
return {
'name': 'Positions',
'res_model': 'expert.position',
'type': 'ir.actions.act_window',
'view_mode': 'tree',
'view_id': self.env.ref('my_project.project_expert_position_tree').id,
'domain': [('project_id', '=', self.id)],
'search_view_id': self.env.ref('my_project.project_expert_position_tree_search').id,
'context': "{'default_project_id': active_id, 'search_default_project_phase_closed': 1}"
}
现在的观点是正确的,但是search_view不是特定的,它是默认的search_view。 我已经调试了该函数,可以确认在返回的 json.
中正确添加了搜索视图的 ID有人可以帮我吗?
我在 github post:
中找到了解决方案https://github.com/odoo/odoo/issues/66147
'search_view_id': (self.env.ref('my_project.project_expert_position_tree_search').id, ),
文档说“(id, name) 对,id 是要加载的特定搜索视图的数据库标识符” https://www.odoo.com/documentation/12.0/reference/actions.html#window-actions-ir-actions-act-window
谢谢!