1
에서 메소드를 호출 할 수 없습니다odoo [Qweb을] 내가 템플릿에서 모델의 메서드를 호출하고 오류가 발생하려고 템플릿
class testmodule(models.Model):
_name = 'testmodule'
def get_session_data(self, cr, uid, ids, context=None):
return u'READING'
보안 설정 :
QWebException: "'NoneType' object has no attribute 'get_session_data'" while evaluating
'testmodule.get_session_data()'
모델은 볼 수있다
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>
testmodule이 정의되지 않았습니다. JavaScript에서 get_session_data를 호출 한 다음 결과를 렌더링해야 할 수도 있습니다. 더 많은 XML 코드를 표시 할 수 있습니까? – Lucas
게시 할 업데이트를 추가했습니다. – Skif
잘 모르겠지만 _prepare_qcontext (odoo/addons/website/models/ir_ui_view.py) 메소드를 살펴보면 변수 웹 사이트가 정의되어있는 것을 볼 수 있습니다. 따라서 website.is_user () 작동합니다. 그래서 _prepare_qcontext를 오버라이드하고 testmodule의 인스턴스를 반환 객체에 추가해야 할 필요가 있다고 생각합니다. 따라서 xml에서 get_session_data를 호출 할 수 있습니다. – Lucas