QWebException:"'NoneType'对象在评估时不可调用"

Has*_* Wh 5 python xml openerp-8 odoo

即时通讯在qweb报告中遇到问题,我按照本教程http://blog.emiprotechnologies.com/create-qweb-report-odoo/创建qweb报告,它与我当前模块的静态数据配合得很好,但是当我尝试为动态数据创建一个解析器类,我得到这个错误"QWebException:"'NoneType'对象不可调用"评估"这里它是我的python类:

from openerp.osv import osv
from openerp.report import report_sxw

class etudiant_report_parser(report_sxw.rml_parse):
   def __init__(self, cr, uid, name, context): 
    super(etudiant_report_parser, self).__init__(cr, uid, name, context=context)
    self.localcontext.update({
            'hello_world': self.hello_world,
                             })
    self.context = context

   def hello_world(self):
    return "hello"

class etudiant_object_report(osv.AbstractModel):
 _name = 'report.gestion_des_etudiants.etudiant_report'
 _inherit = 'report.abstract_report'
 _template = 'gestion_des_etudiants.etudiant_report'
 _wrapped_report_class = etudiant_report_parser
Run Code Online (Sandbox Code Playgroud)

在我的xml文件etudiant_report.xml中,我添加了以下行:

<span t-esc=”hello_world()”/>
Run Code Online (Sandbox Code Playgroud)

但是当我打印报告时,我收到错误:

QWebException: "'NoneType' object is not callable" while evaluating 
Run Code Online (Sandbox Code Playgroud)

这是我模块的树状结构:

/ report/init .py <---加载包含解析器类的etudiant_report.xml

/report/etudiant_report.py <--- ...包含解析器类

/views/report_etudiant.xml <---报告的xml文件

init .py

openerp .py

etudiant_view.xml

etudiant_report.xml <---报告的菜单

etudiant.py

另一件事我注意到,当我进入文件夹"report"时,我找不到任何.pyc文件,对于init .py和etudiant_report.py

Atu*_*ind 0

为了从模型调用自定义方法,您可以执行以下操作。

在模型中定义方法

@api.multi
def mymethod(self):
    return "mymethod"
Run Code Online (Sandbox Code Playgroud)

然后从 qweb 调用该方法。这是 qweb 的示例代码,它从模型调用自定义方法。

<template id="th_custom_report">
    <t t-call="report.html_container">
        <t t-foreach="docs" t-as="o">
            <t t-call="th_dynamic_report.th_report_id" t-lang="o.partner_id.lang"/>
        </t>
    </t>
</template>

<template id="th_report_id">
    <t t-call="report.external_layout">
        <t t-set="o" t-value="o.with_context({'lang':o.partner_id.lang})" />
            <span t-esc="o.mymethod()"/>
        </t>
    </t>
<template>
Run Code Online (Sandbox Code Playgroud)

它会对你有所帮助!