Столбец ошибок не существует в пользовательском модуле Odoo

Я работаю над настраиваемым модулем, и мне нужно добавить поле в модель res.partner. Я добавил в эту модель какое-то поле, но с 1 недели, когда я пытаюсь добавить новое, я получил эту ошибку:

ERROR: column res_partner.my_field does not exist

Другое поле работает хорошо, но не это:

my_field = fields.Boolean(default=False)

Я действительно не понимаю, почему у меня эта проблема. Я пытаюсь добавить в свой модуль зависимости «контакты», он работает в моей локальной версии, но не в моей онлайн-версии.

Если у кого-то есть идеи, это могло бы быть действительно хорошо

Спасибо за вашу помощь

Редактировать res.partner classe

from odoo import api, fields, models
    
class ResPartner(models.Model):
    _inherit = 'res.partner'
    
    badge_ids = fields.One2many('mymodule.badge','client_i
    sub_ids = fields.One2many('mymodule.subs','client_id')
    #field that doesn't work
    my_field = fields.Boolean(default=False)

Зависимости манифеста

'depends': ['base', 'sale', 'website', 'calendar','contacts', 'point_of_sale', 'base_automation'],

person Martin Allimonier    schedule 01.06.2018    source источник
comment
Попробуйте обновить модуль base, или свой собственный модуль кнопкой обновления из интерфейса (форма модуля)   -  person ChesuCR    schedule 01.06.2018
comment
спасибо, ответьте, он работает, но я действительно не понимаю, почему это происходит   -  person Martin Allimonier    schedule 05.06.2018
comment
Один совет: вам не нужно добавлять так много зависимостей в файл манифеста. Добавьте только листовые модули дерева зависимостей   -  person ChesuCR    schedule 05.06.2018


Ответы (4)


Похоже на ошибку. Возможный обходной путь:

Добавьте «res» к зависимостям, а также «base», затем перезапустите экземпляр odoo.

после подтверждения поля обновляются; удалите res из зависимостей, затем обновите модуль.

Такое поведение существует в версиях Odoo выше 8.0.

person kholioeg    schedule 25.07.2018
comment
спасибо @kholioeg, это было полезно для установки, но я думаю, что это могло помешать удалению, теперь, когда я удаляю его, столбцы, возможно, не были удалены, возможно ли это? - person bermick; 28.01.2021

class Partner(models.Model):
    _inherit = "res.partner"

   my_field = fields.Boolean()

Примечание. Укажите "базу" как зависимости в манифесте вашего настраиваемого модуля.

person Bhoomi Vaishnani    schedule 01.06.2018
comment
Спасибо за ваш ответ, я уже поставил базу в виде зависимостей (я думаю, он по умолчанию), и я унаследовал модель res.partner. Я не понимаю, почему 1 поле не работает - person Martin Allimonier; 04.06.2018
comment
Не могли бы вы поместить сюда еще код, чтобы я мог дать вам решение. - person Bhoomi Vaishnani; 04.06.2018
comment
у меня был код, обновление базового модуля выглядит работающим, но я действительно не понимаю, почему это происходит - person Martin Allimonier; 05.06.2018

Я сделал это, чтобы решить эту проблему

  1. Прокомментируйте свои настраиваемые поля в XML-файле
  2. Добавьте депанды "base", "res" в свой манифест
  3. Перезагрузите odoo
  4. Удалите "res", "base".
  5. Обновите свой настраиваемый модуль
  6. Убедитесь, что новое поле добавлено в модель, которую вы хотите унаследовать.
  7. Раскомментируйте свое поле в xml файле
  8. Обновите свой настраиваемый модуль

Odoo 10

person Remn    schedule 14.02.2019

ОБНОВИТЬ:

Хорошее решение для этого - унаследовать модель как новую, и я предполагаю, что это также официальное решение:

Class ResPartner(models.model):
    _name = 'res.partner'
    _inherit = 'res.partner'

    my_field = fields.Char()
person kholioeg    schedule 02.11.2019