我尝试从模板调用模型方法并收到错误:
QWebException: "'NoneType' object has no attribute 'get_session_data'" while evaluating
'testmodule.get_session_data()'
模型有这样的观点:
class testmodule(models.Model):
_name = 'testmodule'
def get_session_data(self, cr, uid, ids, context=None):
return u'READING'
安全设置:
access_testmodule,testmodule,model_testmodule,,1,1,1,1
Qweb模板:
<t t-esc="testmodule.get_session_data()" />
我做错了什么?如果我尝试从网站模型调用方法一切正常。我想使用我自己的类和方法。我该怎么办?
UPD: templates.xml:
<template id="website.user_navbar" inherit_id="website.layout" groups="base.group_user">
<xpath expr="//body/div['id=wrawrap']" position="before">
<div style="background-color: #000800; height:110px;color: red">
| <t t-raw="website.is_user()" /> |<br />
| <t t-esc="testmodule.get_session_data()" /> |
</div>
</xpath>
</template>
答案 0 :(得分:0)
如果查看方法_prepare_qcontext
(odoo / addons / website / models / ir_ui_view.py),您会看到变量website
在那里被定义,这就是为什么对website.is_user()
的调用有效。所以我认为您可能需要覆盖_prepare_qcontext
并向其返回的对象添加testmodule
的实例,因此您可以从xml中调用get_session_data
。