#odoo #multiple-inheritance #odoo-12
#odoo #множественное наследование #odoo-12
Вопрос:
Я пытаюсь добавить наследование для существующего объекта в Odoo, который является «mail.alias.mixin», в объект «utm.campaign».
Я пытался сделать _inherit = [«mail.alias.mixin», «utm.campaign»], но когда я устанавливаю свой модуль, он всегда говорил
File "/home/randy/Odoo/odoo_12/odoo/modules/registry.py", line 180, in __getitem__
return self.models[model_name]
KeyError: None
Вот мой код полностью:
manifest.py
{
"name": "CRM ext",
"version": "12.4.0.0.0",
'author': 'me',
"description": """
extend CRM.
""",
"depends": [
'crm',
'calendar',
'fetchmail',
'utm',
'web_tour',
'digest',
'mail',
],
'init_xml': [],
'data': [
"security/ir.model.access.csv",
'data/crm_question.xml',
'wizard/lost_and_link_partner_crm_wizard_views.xml',
'views/crm_lead_view.xml',
],
'installable': True,
'active': False,
'application': False,
}
И мой utm.py
from odoo import api, fields, models, SUPERUSER_ID
from odoo.http import request
from odoo.tools import pycompat
from odoo.tools.safe_eval import safe_eval
class Campaign(models.Model):
_name = "utm.campaign"
_inherit = ["mail.alias.mixin", "utm.campaign"]
alias_id = fields.Many2one('mail.alias', string='Alias', ondelete="restrict", required=True, help="The email address associated with this campaign. New emails received will automatically create new leads assigned to the campaign.")
crm_team_id = fields.Many2one('crm.team', string="CRM Team")
Я считаю, что мое наследование правильное, но, похоже, я что-то упустил.
Ответ №1:
Согласно документации Odoo 12, вы можете наследовать от нескольких моделей, только если задано _name . В вашем коде _name равно родительской модели, и это то же самое, что не указывать name . Вы не определяете новую модель, поэтому вы не можете наследовать от нескольких родителей.
https://www.odoo.com/documentation/12.0/reference/orm.html#reference-orm-inheritance
_inherit Если задано _name, имена родительских моделей для наследования. Может быть str при наследовании от одного родителя, если _name не задано, имя единственной модели для расширения на месте
Ответ №2:
Я нашел это,
Итак, «mail.alias.mixin» — это абстрактный объект, я скучаю по этому. Итак, мне также нужно реализовать весь абстрактный метод.
Надеюсь, это может спасти чей-то день!