Проблемы с делегированным наследованием модуля проекта — Odoo 13

#python-3.x #odoo #odoo-13

#python-3.x #odoo #odoo-13

Вопрос:

Я наследую модель project.project, чтобы добавить поле «Тип проекта».

 from odoo import models, fields, api

class Proyectos(models.Model):
     _name = 'girodapp.proyectos'
     _description = 'Proyectos potenciales de Girod'
     tipo_proyecto = fields.Selection([
        ('Global','Global'),
        ('Barreras y Verticales','Barreras y Verticales'),
        ('Pretiles','Pretiles'),    
        ])
     project.id = fields.Many2one(
        'project.project',
        delegate=True,
        ondelete='cascade',
        required=True)
  

но при установке модуля я получаю следующую ошибку:

 Error:
Odoo Server Error

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 624, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 310, in _handle_exception
    raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
  File "/usr/lib/python3/dist-packages/odoo/tools/pycompat.py", line 14, in reraise
    raise value
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 669, in dispatch
    result = self._call_function(**self.params)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 350, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/odoo/service/model.py", line 94, in wrapper
    return f(dbname, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 339, in checked_call
    result = self.endpoint(*a, **kw)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 915, in __call__
    return self.method(*args, **kw)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 515, in response_wrap
    response = f(*args, **kw)
  File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 1326, in call_button
    action = self._call_kw(model, method, args, kwargs)
  File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 1314, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "/usr/lib/python3/dist-packages/odoo/api.py", line 387, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
  File "/usr/lib/python3/dist-packages/odoo/api.py", line 374, in _call_kw_multi
    result = method(recs, *args, **kwargs)
  File "<decorator-gen-60>", line 2, in button_immediate_install
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_module.py", line 72, in check_and_log
    return method(self, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_module.py", line 463, in button_immediate_install
    return self._button_immediate_function(type(self).button_install)
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_module.py", line 573, in _button_immediate_function
    modules.registry.Registry.new(self._cr.dbname, update_module=True)
  File "/usr/lib/python3/dist-packages/odoo/modules/registry.py", line 86, in new
    odoo.modules.load_modules(registry._db, force_demo, status, update_module)
  File "/usr/lib/python3/dist-packages/odoo/modules/loading.py", line 423, in load_modules
    loaded_modules, update_module, models_to_check)
  File "/usr/lib/python3/dist-packages/odoo/modules/loading.py", line 315, in load_marked_modules
    perform_checks=perform_checks, models_to_check=models_to_check
  File "/usr/lib/python3/dist-packages/odoo/modules/loading.py", line 182, in load_module_graph
    load_openerp_module(package.name)
  File "/usr/lib/python3/dist-packages/odoo/modules/module.py", line 376, in load_openerp_module
    __import__('odoo.addons.'   module_name)
  File "/mnt/extra-addons/girodapp/__init__.py", line 2, in <module>
    from . import models
  File "/mnt/extra-addons/girodapp/models/__init__.py", line 1, in <module>
    from . import girodapp_proyectos
  File "/mnt/extra-addons/girodapp/models/girodapp_proyectos.py", line 3, in <module>
    class Proyectos(models.Model):
  File "/mnt/extra-addons/girodapp/models/girodapp_proyectos.py", line 15, in Proyectos
    required=True)
NameError: name 'project' is not defined
  

Согласно сообщению, имя project не определено, но этот же метод я использовал с res.partner, и он сработал для меня.
Что я делаю не так? Помогите мне, пожалуйста!

Комментарии:

1. Пожалуйста, добавьте project модуль в зависимости от __manifest__

Ответ №1:

Просто измените это на project.id to project_id .

Первый синтаксический python попытается извлечь атрибут id из объекта project , поэтому он жалуется на это.

Вы определяете Many2one одно поле, поэтому имя не может содержать специальных символов. Это идентификатор, он должен следовать правилам, которые есть на всех языках программирования, например, он не может начинаться с числа …. И т. Д