2015-06-19 2 views
4

Например, класс res.partner. Я хочу, чтобы res.partner унаследовал класс A. Как мне это сделать?Как сделать класс (который уже существует) наследовать другой класс?

Я не думаю, что это будет работать:

class custom_res_partner(osv.osv): 

    _name   = "res.partner" 
    _inherit  = "A" 

custom_res_partner() 
+0

Какова ваша цель для создания новой модели с именем, которое уже существует? –

ответ

2

Если модель уже присутствует, и вы хотите, чтобы наследовать другую модель, это должно быть сделано так:

class custom_res_partner(osv.osv): 
    _name = "res.partner" 
    _inherit = ['res.partner', 'A'] 

_name часть важна здесь, с ним Оду знает, какая из них наследует. в _inherit вам также необходимо указать res.partner, потому что вы расширяете эту модель.

+0

Это работает! Спасибо! – William

1
class custom_res_partner(osv.osv): 

    _name   = "custom.res.partner" # New Model will be created 
    _inherit  = "A" # Base class 

custom_res_partner() 

Это создаст новую модель (таблицу), которые обладают всеми свойствами из его базового класса в соответствии с правилами наследования. Не используйте res.partner, потому что эта модель уже существует.

+0

Я хочу, чтобы 'res.partner' наследовал' A'. Я не хочу создавать новую модель. – William

1
# odoo-8 
from openerp import fields, models, api, _ 
class res_partner(models.Model): 
    _inherit = "A" 

EDIT: (Это для odoo версии 8) Создать новый модуль и наследовать модель A в питона файла в модуле. Для создания нового модуля, обратитесь к Build an Odoo module

+0

Что делать, если я не хочу редактировать исходный файл? Я хочу, чтобы он наследовал другую модель, даже не касаясь исходного исходного кода. – William

+0

@William Я отредактировал ответ. –

+0

Не думаю, что ты задаешь мой вопрос. Я не хочу создавать новый модуль. Я хочу сделать существующий 'res.partner' наследовать' A' без редактирования исходного исходного кода. – William

Смежные вопросы