Odoo 控制器继承

问题描述

我在第一眼问题上遇到了简单的问题。我正在尝试覆盖电子商务插件的帐单地址表单中的必填字段集。

为此,我创建了自定义插件(使用脚手架命令)并尝试覆盖 WebsiteSale 类的 _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 类代码中遇到错误

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\addons\1test-addon\__init__.py",line 3,in <module>
    from . import controllers
  File "c:\development\odoo\addons\1test-addon\controllers\__init__.py",in <module>
    from . import controllers
  File "c:\development\odoo\addons\1test-addon\controllers\controllers.py",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