2017-12-12 8 views
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> 
+0

testmoduleが定義されていません。おそらく、JavaScriptからget_session_dataを呼び出して、結果をレンダリングする必要があります。あなたのXMLコードをもっと表示できますか? – Lucas

+0

投稿を更新しました。 – Skif

+0

私は確信していませんが、_prepare_qcontext(odoo/addons/website/models/ir_ui_view.py)メソッドを見ると、変数ウェブサイトが定義されていることがわかります。そのため、website.is_user( )が動作します。ですから、あなたは_prepare_qcontextをオーバーライドして、返すオブジェクトにtestmoduleのインスタンスを追加する必要があるかもしれないと思いますので、xmlからget_session_dataを呼び出すことができます。 – Lucas

答えて

0

あなたが方法_prepare_qcontext(odoo /アドオン/ウェブサイト/モデル/ ir_ui_view.py)を見れば、あなたは変数websiteがそこに定義されていることがわかります、それがwebsite.is_user()への呼び出しが機能する理由です。だから_prepare_qcontextをオーバーライドし、返されるオブジェクトにtestmoduleのインスタンスを追加する必要があると思われるので、xmlからを呼び出すことができます。

関連する問題