2015-08-17 1 views
3

Я получаю свой первый шаг в обход. Я пытаюсь расширить класс модели продукта следующим образом.Odoo 8.0 product_product inherit extend class

from openerp.osv import osv,fields as fields 

class product_product(osv.osv): 
    _name = 'product.product' 
    _inherit = 'product.product' 
    _columns = { 
     'products_ids':fields.one2many('product_application.version', 'version_id', string="Versions") 
    } 

и получить следующее сообщение об ошибке

File "/home/nano/ARCHIVOS/PycharmProjects/odoo/odoo/openerp/models.py", line 596, in _build_model 
    original_module = pool[name]._original_module if name in parents else cls._module 
    File "/home/nano/ARCHIVOS/PycharmProjects/odoo/odoo/openerp/modules/registry.py", line 102, in __getitem__ 
    return self.models[model_name] 
KeyError: 'product.product' 

Может кто-нибудь указать мне полную документацию odoo v8, официальный беден

+0

Если вы унаследовать класс 'product.product' вы изменяете варианты продукта. Может быть, вы хотите изменить класс 'product.template', не так ли? – ChesuCR

ответ

8

Вы получаете «KeyError»

поэтому, пожалуйста, проверьте, дает ли вы правильно зависит OpenERP .py т.е., вы должны дать «продукт» в зависимости

Дайте так: - 'зависит от': [ 'базы', 'продукта'],

Надеется, что это помогает ...

+0

да это поможет! Решено добавить «продукт» в зависимости от __openerp__.py –

1

Попробуйте это:

from openerp.osv import fields,osv 
class product_product(osv.osv): 
    _name = 'product.product' 
    _inherit = 'product.product' 
    _columns = { 
     'products_ids':fields.one2many('product_application.version', 'version_id', string="Versions") 
    } 

Я не» Знаете, почему вы используете «поля как поля»?

Или еще проверьте, что вы установили модуль «Продукт»?

+0

Решено добавить «продукт» в зависимости от __openerp__.py. Спасибо! –

2

В odoo _name создает новую таблицу в серверной базе данных.
Итак, проблема заключается в том, что вы используете при наследовании _name = 'product.product', который уже существует в БД (продукт базового класса).
Также, если вы хотите, чтобы нормальное наследование не нуждалось в атрибуте _name, просто вы можете расширять только _inherit.
Вид наследования, который вы используете, поскольку имя _name не должно быть равно _inherit (_name! = _inherit). Так что, либо дать новое имя _NAME = «» new.name
Дополнительные разъяснения Проверить эту ссылку
https://www.odoo.com/documentation/8.0/howtos/backend.html

+0

Alredy попробуйте, что в ссылке говорится использовать _name = _inheret. Решено добавить «продукт» в зависимости от __openerp__.py –