python - Odoo 10:无法从菜单项调用我的 python 函数
问题描述
这是我的 view.xml :
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="view_sim" model="ir.actions.server">
<field name="name">Details</field>
<field name="model_id" ref="model_test" />
<field name="condition">True</field>
<field name="type">ir.actions.server</field>
<field name="state">code</field>
<field name="code">self.on_test()</field>
</record>
<record model="ir.actions.act_window" id="view_sim">
<field name="name">Details</field>
<field
name="res_model">test</field>
<field name="view_type">form</field>
<field name="limit">100</field>
<field name="view_mode">tree,form</field>
<field name="domain">[]</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">Create new
</p>
</field>
</record>
<!-- Top menu item -->
<menuitem id="root.menu_root" name="card"/>
<!-- menu categories -->
<menuitem id="sim" name="Sim" parent="root.menu_root" action="view_sim"/>
</data>
</odoo>
这是我在 models.py 中的 python 函数:
def on_test(self):
_logger.error("test")
当我单击菜单项时,我无法调用此函数。我收到错误消息:
ValueError: <type 'exceptions.NameError'>: "name 'self' is not defined" while evaluating
u'self.on_test()
在odoo 10中调用函数是否正确?如何在views.xml 中调用我的函数或定义self?
解决方案
您可以ir.actions.server
在 Odoo 的技术部分创建或简单的服务器操作。它对初学者有一些有趣的优势:一点文档。以下是 Odoo 10 的副本,显示了您在创建 python 代码服务器操作时获得的小文档:
# Available variables:
# - time, datetime, dateutil, timezone: Python libraries
# - env: Odoo Environement
# - model: Model of the record on which the action is triggered
# - record: Record on which the action is triggered if there is one, otherwise None
# - records: Records on which the action is triggered if there is one, otherwise None
# - log : log(message), function to log debug information in logging table
# - Warning: Warning Exception to use with raise
# To return an action, assign: action = {...}
而且您来自菜单,因此 Odoo 不知道任何记录。就像model.on_test()
PROTOCOL 已经写好的一样使用。你还应该用 来装饰你的方法,@api.model
告诉 Odoo 这个方法的调用中不涉及任何记录。
推荐阅读
- javascript - QuerySnapshot 的类型是什么?
- gitlab - Gitlab上游没有响应
- python - 打包 streamlit 应用并在 Windows 上运行可执行文件
- javascript - 从内容脚本访问/操作 React 组件
- ios - 如何控制集合视图单元格布局快速故事板的大小
- ios - 也显示覆盖 TabBar 的全屏视图
- python - Android应用程序中的tensorflow-lite精度差
- python - Python生成的文件未显示在工作目录中
- pine-script - 一组日本蜡烛在移动平均线交叉处的最小值,并用 Pinescript 绘制此图
- javascript - 如何在准备好的站点上添加反应钩子?