![](/img/trans.png)
[英]How to inherit controller of a third party module for customization Odoo 12?
[英]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.