我的报告文件包含
class AccountInvoice_Report(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context):
super(AccountInvoice_Report, self).__init__(cr, uid, name, context=context)
self.localcontext.update({
'time': time,
'cr':cr,
'uid': uid,
'get_address': self.get_address,
})
我写了get_address函数。当我在我的mako文件中调用该函数时
<% get_address() %>
然后它将错误视为
File "memory:0xb23c67ccL", line 208, in render_body
<% get_address()%>
TypeError: 'Undefined' object is not callable
我正在做什么错误的文件定义或调用函数。
答案 0 :(得分:0)
<强> my_parser.py 强>
import time
from openerp.report import report_sxw
class AccountInvoice_Report(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context):
super(AccountInvoice_Report, self).__init__(cr, uid, name, context=context)
self.localcontext.update({
'time': time,
'cr':cr,
'uid': uid,
'get_address': self.get_address,})
def get_address(self):
#your code
return 'address'
report_sxw.report_sxw('report.your_report_name', 'model', 'path/to/mako', parser=AccountInvoice_Report)
在__init__.py
import my_parser
也不要忘记在主__init__.py
答案 1 :(得分:0)
还尝试重新启动IDE /服务器。这个对我有用。有时您可以在同一时间运行许多实例。
答案 2 :(得分:0)
在:
report_sxw.report_sxw('report.your_report_name', 'model', 'path/to/mako', parser=AccountInvoice_Report)
您应该确保您的 your_report_name &#39;与字段&quot; report_name&#39;相同在模型&#39; ir.actions.report.xml&#39; (您配置报告的地方)。
函数report_sxw.report_sxw()无法找到&#39; report_name&#39;用于链接解析器的报告。
答案 3 :(得分:0)
这是一个古老的问题,但也许有人可以利用这一点。我已经使用了您尝试的方法,以下代码在6.0上为我工作: 在 init 而不是
'get_address': self.get_address,})
我用过:
'get_address': self.get_address(),})
然后我将我的方法声明为:
def get_address(self):
最后在我的mako上,我打电话给:
${get_address}
请注意,在mako文件中,我没有使用&#39; get_address()&#39;因为它向我发送了一个错误,指出字符串get_address不是可调用对象。希望它有所帮助。