有没有办法在 Odoo 12 的树视图中的操作菜单中添加额外的操作?
Posted
技术标签:
【中文标题】有没有办法在 Odoo 12 的树视图中的操作菜单中添加额外的操作?【英文标题】:Is there a way to add an extra action to the action menu in tree view in Odoo 12? 【发布时间】:2020-11-02 16:56:09 【问题描述】:我正在搜索添加一个显示我的向导的新按钮到树视图中显示的操作按钮
我的向导有效,因为我单独对其进行了测试,但我需要将其添加到顶部的操作按钮中,我不知道如何
我尝试使用 action.server,但没有找到任何对我有帮助的示例
谢谢
我也知道从 Odoo 10 到 Odoo 12 发生了变化,这就是为什么我没有找到任何线索。
接下来是我尝试过但没有成功的例子
<record model="ir.actions.act_window" id="enviar_evaluacion">
<field name="name">enviar_evaluacion</field>
<field name="view_id" ref="vista_formulario_riesgo_para_evaluacion"/>
<field name="domain">[]</field>
<field name="context"></field>
<field name="res_model">pdi.riesgo</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<record model="ir.actions.server" id="accion_servidor_evaluacion">
<field name="name">Enviar a evaluacion</field>
<field name="model_id" ref="model_pdi_riesgo_wizard_evaluacion"/>
<field name="state">code</field>
<field name="code">
object.enviar_a_evaluar(context.get('active_ids'))
</field>
</record>
下次尝试
<record model="ir.actions.server" id="menu_action_evaluacion">
<field name="name">Enviar a evaluacion</field>
<field name="model_id" ref="model_pdi_riesgo"/>
<field name="state">code</field>
<field name="code">
action=pdi.riesgo.wizard.evaluacion.enviar_a_evaluar()
</field>
</record>
<menuitem id="menu_enviar_a_evaluacion"
name="Enviar a evaluacion"
parent="pdi_Riesgo.menu_riesgo_evaluaciones"
action="menu_action_evaluacion"/>
【问题讨论】:
【参考方案1】:“新”方式是在操作上设置一些新字段。以下是来自Odoo's app crm 的示例:
<!--
'Mark as Lost' in action dropdown
-->
<record id="action_mark_as_lost" model="ir.actions.server">
<field name="name">Mark as lost</field>
<field name="model_id" ref="model_crm_lead"/>
<field name="binding_model_id" ref="crm.model_crm_lead"/>
<field name="binding_view_types">list</field>
<field name="state">code</field>
<field name="code">
if record:
action_values = env.ref('crm.crm_lead_lost_action').read()[0]
action_values.update('context': env.context)
action = action_values
</field>
</record>
所以模型ir.actions
(由ir.actions.server
继承)上有三个字段都以binding_
开头
report
用于报告菜单,action
用于操作菜单(默认)
binding_view_types:list,form
是默认值,list
和 form
也应该可以,我没有研究那个字段,所以也许有更多的组合/值
【讨论】:
在model_id
后面的模型方法,例如model.my_method()
或者如果你在列表视图中标记了一些记录,你也可以调用records.my_multi_method()
。
我今天会试试这个。晚上我会再次评论它是否有效感谢您的帮助
问题仍然存在,尽管没有显示错误,但按钮什么也不做。这是现在的代码
[Odoo 7,8,9 和 10] 要将动作添加到动作菜单,还必须为“ir.values”模型创建记录。举个例子:
<record model="ir.values" id="ir_values_my_action">
<field name="model_id" ref="model_my_model" />
<field name="name">Name Of Action</field>
<field name="key2">client_action_multi</field>
<field
name="value"
eval=
"'ir.actions.server,' + str(ref('action_name_reference'))"/>
<field name="key">action</field>
<field name="model">my.model</field>
</record>
【讨论】:
这是旧 Odoo 版本的解决方案,但不适用于 Odoo 12,因为该模型ir.values
不再存在。
你说得对,我会更新我的答案以添加相关版本。其他人已经为 Odoo 12 编写了与新的 binding_model_id 属性相关的解决方案。
您还可以添加版本 7、8 和 9,因为该解决方案也应该在那里工作。是的,我已经写了另一个答案:-P以上是关于有没有办法在 Odoo 12 的树视图中的操作菜单中添加额外的操作?的主要内容,如果未能解决你的问题,请参考以下文章