когда я наследую логическое поле odoo10 поднять ошибку? - PullRequest
0 голосов
/ 17 декабря 2018

В качестве примера, «reonp» хорошо добавлен в модель, но когда я попытался добавить «gradjanin», Odoo 10 выдает ошибку

image of code/error

Я былпытается перезапустить сервер

py

class komPartnerrReon(models.Model):
    _inherit = 'res.partner'

    reonp = fields.Many2one('kom.reon')
    gradjanin = fields.Boolean('Gradjanin', default=False) #There was an error after adding this line of code

ошибка

  File "C:\odoo-10.0\odoo\sql_db.py", line 231, in execute
      res = self._obj.execute(query, params)
ProgrammingError: column res_partner.gradjanin does not exist
LINE 1: ...id" as "parent_id","res_partner"."name" as "name","res_partn...

Ответы [ 3 ]

0 голосов
/ 18 декабря 2018

Я предлагаю добавить его вручную к 'res_partner', используя этот SQL-запрос:

ALTER TABLE res_partner 
    ADD COLUMN gradjanin BOOLEAN;

Вы столкнулись с этой проблемой и с res_users, и вам не нужно перезапускать службу.

0 голосов
/ 18 декабря 2018

На самом деле это классическая ошибка, возникающая при расширении модели res.partner новыми полями.

При запуске сервера Odoo все модули Python для модулей будут «загружаться», так что, конечно, ваши новые поля должны быть на res.partner, тоже.Но это только на стороне Python или лучше на самом приложении.Теперь попытка использовать приложение или «загрузить что-либо в веб-клиенте Odoo» затем попытается загрузить данные из базы данных, где новые поля не имеют соответствующих столбцов.

Например, логин.При входе в систему Odoo загрузит пользователя, который входит в систему. Модель res.users наследует всю модель res.partner, поэтому Odoo пытается загрузить res.partner данные из базы данных.И выдайте ошибку.

Это также может произойти, если вы уже вошли в систему. Например, в форме представления модели с болтовней.Болтовня загружает подписчиков, которые являются партнерами, поэтому выдает ошибку.

Что вы можете сделать, чтобы это исправить?

Обновите модуль при запуске сервера

с параметром -u (и если в системе несколько баз данных с -d)

odoo -c <path_to_config> -u my_module -d my_database

Если это невозможно ,

например, в продуктивных системах или из-за того, что Odoo запускается как служба, попробуйте запустить второй экземпляр, который просто обновит модуль и сразу же остановится.

odoo -c <path_to_config> -u my_module -d my_database --max-cron-threads=0 --stop-after-init --no-xmlrpc

Это похоже на «самоуничтожающийся» безголовый экземпляр Odoo.Параметр --no-xmlrpc будет равен --no-http в Odoo V11 +.

Скажите Odoo в базе данных обновить модуль / приложение.

UPDATE ir_module_module set state = 'to upgrade' where name = 'my_module';

После этого просто перезапустите Odoo.

Или хитрый способ :

Просто зайдите в меню приложений и откройте свой модуль / приложение.Перезапустите Odoo и обновите модуль / приложение.Это самый быстрый способ, но вы догадываетесь об этом, иногда вы забудете это сделать.И это работает только до того, как вы получите ошибку; -)

0 голосов
/ 18 декабря 2018

До этого добавление зависит от манифеста для res.partner.

'depends': ['base'],

и обновления модуля.Попробуйте еще раз!

...