Атрибуты расширенного — традиционного наследования — модуля odoo, не созданного в базе данных

Я расширил модуль odoo 'res.partner' следующим кодом

class ResPartner(models.Model): _name = 'res.partner' _inherit = 'res.partner' sales_force_ids = fields.One2many('sales_calc.sales_calc') ake_code = fields.Char('AKE Code')

Я перезапустил Odoo server nut, когда пытаюсь перейти к модулю в приложениях для обновления модуля, страница приложений отображается как белый экран

В журнале odoo обнаружена следующая ошибка.

ProgrammingError: столбец res_partner.ake_code не существует


person Ahmed Kamal ELSaman    schedule 05.12.2016    source источник


Ответы (1)


Проблема не в механизме наследования, а только в модуле обновления недостаточно, мне пришлось удалить и установите модуль снова.

Я прокомментировал ake_code = fields.Char('AKE Code'), перезапустил сервер odoo, удалил модуль, раскомментировал ake_code = fields.Char('AKE Code'), перезапустил сервер odoo и, наконец, >установил модуль снова.

Меня смутило другое поднятое предупреждение при повторной установке модуля:

Не найдено ссылочное поле «Нет» для «sales_calc.sales_calc»

Проблема связана с sales_force_ids = fields.One2many('sales_calc.sales_calc') Мне пришлось написать связанное поле id как sales_force_ids = fields.One2many('sales_calc.sales_calc', 'id'), чтобы нормально установить модуль без этого предупреждения.

person Ahmed Kamal ELSaman    schedule 05.12.2016
comment
Основная проблема заключалась в том, что вы указывали _name = 'res.partner', если вы просто расширяете модель Odoo, вам не нужно снова указывать имя, _inherit = 'res.partner' достаточно - person danidee; 06.12.2016
comment
Нет, это вообще не проблема, это опциональныйпараметр, я знаю, что не важно писать в случае расширение модуля. На самом деле она не была написана сначала, пока проблема существовала, и до сих пор пишется, пока проблема решается согласно к письменному ответу выше. Примечание. Я регенерировал проблему и решал ее несколько раз, чтобы быть уверенным в ответе. Спасибо @danidee. - person Ahmed Kamal ELSaman; 06.12.2016
comment
@danidee См. в документации odoo наследование классов, это написано на рисунке заголовка наследования _name = 'obj1' и отличается от прототипирование наследования _name = 'new', хотя два типа наследования имеют _inherit = obj1. https://www.odoo.com/documentation/8.0/howtos/backend.html - person Ahmed Kamal ELSaman; 06.12.2016
comment
Изменение res.partner всегда будет нести эти проблемы. Просто запустите сервер с параметром --update=my_modul, чтобы принудительно обновить пользовательский модуль. Это должно решить проблему. - person CZoellner; 06.12.2016
comment
@CZoellner Спасибо, попробую. - person Ahmed Kamal ELSaman; 01.01.2017