Odoo 10:无法从菜单项调用我的 python 函数



这是我的观点.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中调用函数的正确方法吗?如何在视图中调用我的函数或定义 self.xml?

您可以在Odoo的技术部分创建ir.actions.server或简单的服务器操作。对于初学者来说,它有一些有趣的优势:一些文档。以下是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(),因为协议已经编写了。您还应该用@api.model装饰您的方法,以告诉Odoo此方法的调用中不涉及任何记录。

试试这个, 而不是

<field name="code">self.on_test()</field>

更改为

<field name="code">model.on_test()</field>

有用的链接,您可以在Odoo服务器操作的评估上下文中找到可用选项的文档

http://www.odoo.com/documentation/10.0/reference/actions.html#reference-actions-server-context

最新更新