为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

富国沪深 2021-06-14 13:00:03
这是我的 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 evaluatingu'self.on_test()这是在odoo 10中调用函数的正确方法吗?如何在views.xml 中调用我的函数或定义self?
查看完整描述

3 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

您可以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 这个方法的调用没有涉及任何记录。


查看完整回答
反对 回复 2021-06-16
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

试试这个,而不是

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

改成

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


查看完整回答
反对 回复 2021-06-16
  • 3 回答
  • 0 关注
  • 235 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信