Odoo 控制器继承
Odoo controller inheritance
我正在努力解决乍一看很简单的问题。我正在尝试覆盖电子商务插件的帐单地址表单中的一组必填字段。
为此,我创建了自定义插件(使用脚手架命令)并尝试覆盖 WebsiteSale class.
的方法 _get_mandatory_billing_fields
这是我对 myaddon/controllers/controllers.py 所做的唯一更改,其余插件内容是我通过脚手架获得的内容
from addons.website_sale.controllers.main import WebsiteSale
class WebsiteSaleInherit(WebsiteSale):
def _get_mandatory_billing_fields(self):
return ["name","email"]
看起来很合乎逻辑,但是当我尝试安装此模块时,我在 WebsiteSale class 代码
中遇到错误
Traceback (most recent call last):
File "C:\development\odoo\odoo\service\server.py", line 1198, in preload_registries
registry = Registry.new(dbname, update_module=update_module)
File "C:\development\odoo\odoo\modules\registry.py", line 89, in new
odoo.modules.load_modules(registry._db, force_demo, status, update_module)
File "C:\development\odoo\odoo\modules\loading.py", line 449, in load_modules
processed_modules += load_marked_modules(cr, graph,
File "C:\development\odoo\odoo\modules\loading.py", line 346, in load_marked_modules
loaded, processed = load_module_graph(
File "C:\development\odoo\odoo\modules\loading.py", line 178, in load_module_graph
load_openerp_module(package.name)
File "C:\development\odoo\odoo\modules\module.py", line 358, in load_openerp_module
__import__('odoo.addons.' + module_name)
File "c:\development\odoo\addonstest-addon\__init__.py", line 3, in <module>
from . import controllers
File "c:\development\odoo\addonstest-addon\controllers\__init__.py", line 3, in <module>
from . import controllers
File "c:\development\odoo\addonstest-addon\controllers\controllers.py", line 3, in <module>
from addons.website_sale.controllers.main import WebsiteSale
File "C:\development\odoo\addons\website_sale\__init__.py", line 5, in <module>
from . import models
File "C:\development\odoo\addons\website_sale\models\__init__.py", line 4, in <module>
from . import account_move
File "C:\development\odoo\addons\website_sale\models\account_move.py", line 7, in <module>
class AccountMove(models.Model):
File "C:\development\odoo\odoo\models.py", line 167, in __init__
assert self.__module__.startswith('odoo.addons.'), \
AssertionError: Invalid import of addons.website_sale.models.account_move.AccountMove, it should start with 'odoo.addons'.
看来我在继承过程中犯了一些错误。任何提示在哪里可以解决这个问题将不胜感激!
我会自己回答
那只是一个愚蠢的导入错误
WRONG
from addons.website_sale.controllers.main import WebsiteSale
RIGHT
from odoo.addons.website_sale.controllers.main import WebsiteSale
我正在努力解决乍一看很简单的问题。我正在尝试覆盖电子商务插件的帐单地址表单中的一组必填字段。
为此,我创建了自定义插件(使用脚手架命令)并尝试覆盖 WebsiteSale class.
的方法 _get_mandatory_billing_fields这是我对 myaddon/controllers/controllers.py 所做的唯一更改,其余插件内容是我通过脚手架获得的内容
from addons.website_sale.controllers.main import WebsiteSale
class WebsiteSaleInherit(WebsiteSale):
def _get_mandatory_billing_fields(self):
return ["name","email"]
看起来很合乎逻辑,但是当我尝试安装此模块时,我在 WebsiteSale class 代码
中遇到错误Traceback (most recent call last):
File "C:\development\odoo\odoo\service\server.py", line 1198, in preload_registries
registry = Registry.new(dbname, update_module=update_module)
File "C:\development\odoo\odoo\modules\registry.py", line 89, in new
odoo.modules.load_modules(registry._db, force_demo, status, update_module)
File "C:\development\odoo\odoo\modules\loading.py", line 449, in load_modules
processed_modules += load_marked_modules(cr, graph,
File "C:\development\odoo\odoo\modules\loading.py", line 346, in load_marked_modules
loaded, processed = load_module_graph(
File "C:\development\odoo\odoo\modules\loading.py", line 178, in load_module_graph
load_openerp_module(package.name)
File "C:\development\odoo\odoo\modules\module.py", line 358, in load_openerp_module
__import__('odoo.addons.' + module_name)
File "c:\development\odoo\addonstest-addon\__init__.py", line 3, in <module>
from . import controllers
File "c:\development\odoo\addonstest-addon\controllers\__init__.py", line 3, in <module>
from . import controllers
File "c:\development\odoo\addonstest-addon\controllers\controllers.py", line 3, in <module>
from addons.website_sale.controllers.main import WebsiteSale
File "C:\development\odoo\addons\website_sale\__init__.py", line 5, in <module>
from . import models
File "C:\development\odoo\addons\website_sale\models\__init__.py", line 4, in <module>
from . import account_move
File "C:\development\odoo\addons\website_sale\models\account_move.py", line 7, in <module>
class AccountMove(models.Model):
File "C:\development\odoo\odoo\models.py", line 167, in __init__
assert self.__module__.startswith('odoo.addons.'), \
AssertionError: Invalid import of addons.website_sale.models.account_move.AccountMove, it should start with 'odoo.addons'.
看来我在继承过程中犯了一些错误。任何提示在哪里可以解决这个问题将不胜感激!
我会自己回答
那只是一个愚蠢的导入错误
WRONG
from addons.website_sale.controllers.main import WebsiteSale
RIGHT
from odoo.addons.website_sale.controllers.main import WebsiteSale