簡體   English   中英

如何在繼承 controller Odoo 12 中覆蓋 function 僅在此模塊中使用

[英]how to override function in inherit controller Odoo 12 only using in this module

我的核心 controller class:

class ReportController(http.Controller):
   @http.route('/report/download_document/<reportname>/<docids>', type='http', auth="user")
   @serialize_exception
   def download_document(self, **kw):

我繼承 class:

from odoo.addons.my_module.controllers.main import ReportController as RC

class ReportControllerProject(RC):
# Override method: download_document in my_module
   @http.route('/report/download_document/<reportname>/<docids>', type='http', auth="user")
   @serialize_exception
   def download_document(self, **kw):

但是當我在另一個模塊中使用 action to download_document 時,它仍然使用繼承 class 的 function。

我希望這個 function 只用在這個模塊的繼承 class 中,而不是無處不在,那我該怎么辦?

其他模塊將使用它們所依賴的模塊的 function。 因此,在要使用覆蓋的 function 的模塊清單中,請確保依賴於 my_module。

__manifest__.py
.
.
.
'depends': [
    'my_module',
],
.
.

為了解決這種情況,我只是使用條件並調用 super() function 來執行這個覆蓋函數

from odoo.addons.my_module.controllers.main import ReportController as RC

class ReportControllerProject(RC):
    # Override method: download_document in my_module
    @http.route('/report/download_document/<reportname>/<docids>', type='http', auth="user")
    @serialize_exception
    def download_document(self, **kw):
        *some code here*
        if <condition>:
           *some code here*
           return *something here*
        else:
           return super(ReportControllerProject, self).download_document(**kw)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM