#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 одно поле, поэтому имя не может содержать специальных символов. Это идентификатор, он должен следовать правилам, которые есть на всех языках программирования, например, он не может начинаться с числа …. И т. Д