python - 我无法安装创建的模块它给出了一系列错误
问题描述
我正在创建一个 Odoo 模块,它有医生、专业和预约、树和表单视图。我是按照老师给出的模板完成的,但是在安装时它给了我一系列错误。这些是错误:
Error:
Odoo Server Error
Traceback (most recent call last):
File "/opt/odoo/odoo/odoo/http.py", line 656, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/opt/odoo/odoo/odoo/http.py", line 314, in _handle_exception
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
File "/opt/odoo/odoo/odoo/tools/pycompat.py", line 87, in reraise
raise value
File "/opt/odoo/odoo/odoo/http.py", line 698, in dispatch
result = self._call_function(**self.params)
File "/opt/odoo/odoo/odoo/http.py", line 346, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/opt/odoo/odoo/odoo/service/model.py", line 97, in wrapper
return f(dbname, *args, **kwargs)
File "/opt/odoo/odoo/odoo/http.py", line 339, in checked_call
result = self.endpoint(*a, **kw)
File "/opt/odoo/odoo/odoo/http.py", line 941, in __call__
return self.method(*args, **kw)
File "/opt/odoo/odoo/odoo/http.py", line 519, in response_wrap
response = f(*args, **kw)
File "/opt/odoo/odoo/addons/web/controllers/main.py", line 966, in call_button
action = self._call_kw(model, method, args, {})
File "/opt/odoo/odoo/addons/web/controllers/main.py", line 954, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/opt/odoo/odoo/odoo/api.py", line 759, in call_kw
return _call_kw_multi(method, model, args, kwargs)
File "/opt/odoo/odoo/odoo/api.py", line 746, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "<decorator-gen-61>", line 2, in button_immediate_install
File "/opt/odoo/odoo/odoo/addons/base/models/ir_module.py", line 74, in check_and_log
return method(self, *args, **kwargs)
File "/opt/odoo/odoo/odoo/addons/base/models/ir_module.py", line 445, in button_immediate_install
return self._button_immediate_function(type(self).button_install)
File "/opt/odoo/odoo/odoo/addons/base/models/ir_module.py", line 561, in _button_immediate_function
modules.registry.Registry.new(self._cr.dbname, update_module=True)
File "/opt/odoo/odoo/odoo/modules/registry.py", line 86, in new
odoo.modules.load_modules(registry._db, force_demo, status, update_module)
File "/opt/odoo/odoo/odoo/modules/loading.py", line 421, in load_modules
loaded_modules, update_module, models_to_check)
File "/opt/odoo/odoo/odoo/modules/loading.py", line 313, in load_marked_modules
perform_checks=perform_checks, models_to_check=models_to_check
File "/opt/odoo/odoo/odoo/modules/loading.py", line 179, in load_module_graph
load_openerp_module(package.name)
File "/opt/odoo/odoo/odoo/modules/module.py", line 368, in load_openerp_module
__import__('odoo.addons.' + module_name)
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 656, in _load_unlocked
File "<frozen importlib._bootstrap>", line 626, in _load_backward_compatible
File "/opt/odoo/odoo/odoo/modules/module.py", line 82, in load_module
exec(open(modfile, 'rb').read(), new_mod.__dict__)
File "<string>", line 4, in <module>
File "/etc/odoo/custom-ADDONS/hospital/models/__init__.py", line 3, in <module>
from . import models
File "/etc/odoo/custom-ADDONS/hospital/models/models.py", line 40, in <module>
consultas = fields.selections(
AttributeError: module 'odoo.fields' has no attribute 'selections'
```
这些是不同模型的类别:
# -*- coding: utf-8 -*-
from odoo import models, fields, api
# class hospital1(models.Model):
# _name = 'hospital.hospital'
# name = fields.Char()
# value = fields.Integer()
# value2 = fields.Float(compute="_value_pc", store=True)
# description = fields.Text()
#
# @api.depends('value')
# def _value_pc(self):
# self.value2 = float(self.value) / 100
class medicos(models.Model):
# nombre del modelo
__name = 'hospital.medicos'
name = fields.Char(string="Nombre", required=True,
size=40, help="Introduzca el nombre")
domicilio = fields.Char(string="domicilio", required=True,
size=40, help="Introduzca el domicilio")
telefono = fields.Integer(
string="telefono", required=True, size=9, help="Introduzca el telefono")
fecha = fields.Date(string="Fecha ingreso", required=True)
especialidad_medico = fields.Many2one(
'hospital.especialidad', string="Especialidad")
citas_medico = fields.One2many(
"hospital.citas", "medico_cita", string="Citas del medico")
class especialidad (models.Model):
# nombre del modelo
__name = 'hospital.especilidad'
name = fields.Char(string="Nombre", required=True,
size=40, help="Introduzca la especialidad")
consultas = fields.selections
([('1', 'consulta 1'), ('2', 'consulta 2'), ('3', 'consulta 3'), ('4', 'consulta 4'),
('5', 'consulta 5')])
medico_esp = fields.One2many(
'hospital.medicos', 'especialidad_medico', string="Especialidad")
citas_esp = fields.One2many(
"hospital.citas", "especialidad_citas", string="Citas del medico")
class citas (models.Model):
# nombre del modelo
__name = 'hospital.citas'
paciente = fields.Char(string="Nombre", required=True,
size=40, help="Introduzca del paciente")
fecha_cita = fields.Datetime(string="Fecha de la cita", required=True)
especialidad_cita = fields.Many2one(
'hospital.especialidad', string="Especialidad")
medico_cita = fields.Many2one(
'hospital.medicos', string="Medico")
这就是我所拥有的,根据您告诉我的内容以及 odoo 程序给我的错误进行了修改。
解决方案
您收到字段“medico_citas”的 KeyError,这是来自您的“citas_medico”字段定义:
citas_medico = fields.One2many(
"hospital.cita", "medico_citas", string="Citas del medico")
One2Many 字段的强制语法是
field_name = fields.One2many(comodel_name, inverse_name, string)
这里
comodel_name = name of the target model
inverse_name = name of the inverse Many2one field in comodel_name
这里的错误是因为您的“hospital.cita”对象中没有“medico_citas”字段。
请在阅读 ORM API 文档后全面检查您的代码。还有一件事,类中的名称定义不需要两个下划线
_name = 'a.model.name'
更正例如:
改变这个: -
citas_medico = fields.One2many(
"hospital.cita", "medico_citas", string="Citas del medico")
到->
citas_medico = fields.One2many(
"hospital.citas", "medico_cita", string="Citas del medico")
和这个:-
medico_cita = fields.Many2one(
'hospital.medico', string="Medico")
到->
medico_cita = fields.Many2one(
'hospital.medicos', string="Medico")
请像这样检查每个关系字段。
希望这可以帮助。
推荐阅读
- android - Android撰写自定义主题颜色 - 文本颜色未选择主题颜色
- java - 如何在 Redis 中缓存嵌套字典以供用 Python 和 Java 编写的应用程序使用
- angular - Angular 9:放置文件未触发
- java - 从文件列表创建 zip(包括路径文件夹)
- asp.net-core - ASP.NET Core 中的开发证书身份验证问题
- reactjs - 在“POST”请求中,我的 createPost Thunk 函数给出错误 {type: "post/createPost/pending", payload: undefined}
- javascript - 切换到另一个后如何更改文本输入边框颜色
- python - 如何在 docker 中运行 pytorch 模型服务器?
- angular - Angular 导航丢失 main.js 等
- javascript - 循环中的同步 Ajax - 阻塞问题