<xpath expr="//*[@id='wrap']/section[2]/div" position="replace">
<t t-set="Math" t-value="math"/>
<t t-foreach="range(0, Math.ceil(number_of_device_issue/2))" t-as="num">
<t t-esc="num"/>
</t>
错误:'NoneType'对象没有属性'ceil' Traceback(最近一次调用最后一次): 在_compiled_fn中输入文件“/home/sachin/Documents/ODOO_11/sources/odoo11-1104/odoo/addons/base/ir/ir_qweb/qweb.py”,第341行 return编译(self,append,new,options,log) 在template_336_8中的文件“”,第1行 文件“”,第2行,在body_call_content_7中 AttributeError:'NoneType'对象没有属性'ceil'
呈现编译AST时出错
AttributeError:'NoneType'对象没有属性'ceil'
模板:336
路径:/ templates / t / t / div / section [2] / t [2]
节点:<t t-foreach="range(0, Math.ceil(number_of_device_issue/2))" t-as="num">
<t t-esc="num"/>
</t>
答案 0 :(得分:1)
Odoo Reports(对于html和pdf)实际上是渲染视图(类型为QWeb)。此类视图的模型为this.listProperties = this.listProperties.bind(this);
。您将在ir.ui.view
模块中找到render方法。看here
base
有趣的部分是@api.multi
def render(self, values=None, engine='ir.qweb'):
assert isinstance(self.id, (int, long))
qcontext = dict(
env=self.env,
keep_query=keep_query,
request=request, # might be unbound if we're not in an httprequest context
debug=request.debug if request else False,
json=json,
quote_plus=werkzeug.url_quote_plus,
time=time,
datetime=datetime,
relativedelta=relativedelta,
xmlid=self.key,
)
qcontext.update(values or {})
return self.env[engine].render(self.id, qcontext)
,它可以在渲染QWeb模板时使用一些python库。所以只需继承/扩展模型qcontext
并覆盖/扩展ir.ui.view
。
编辑:我的例子是Odoo v10。
答案 1 :(得分:1)
在qweb中不允许使用外部lib函数,因为您必须在使用前在上下文中导入这些库。所以你应该把这些值从控制器中评估出来,或者写下这里的逻辑是qweb,因为ceil()
没有任何复杂的逻辑。