我正在尝试制作自定义 Odoo 模块,但收到此错误:
RPC_ERROR
Odoo Server Error
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/odoo/http.py", line 1584, in \_serve_db
return service_model.retrying(self.\_serve_ir_http, self.env)
File "/usr/lib/python3/dist-packages/odoo/service/model.py", line 133, in retrying
result = func()
File "/usr/lib/python3/dist-packages/odoo/http.py", line 1611, in \_serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 1815, in dispatch
result = self.request.registry\['ir.http'\].\_dispatch(endpoint)
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_http.py", line 154, in \_dispatch
result = endpoint(\*\*request.params)
File "/usr/lib/python3/dist-packages/odoo/http.py", line 697, in route_wrapper
result = endpoint(self, \*args, \*\*params_ok)
File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/dataset.py", line 46, in call_button
action = self.\_call_kw(model, method, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/dataset.py", line 33, in \_call_kw
return call_kw(request.env\[model\], method, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/api.py", line 461, in call_kw
result = \_call_kw_multi(method, model, args, kwargs)
File "/usr/lib/python3/dist-packages/odoo/api.py", line 448, in \_call_kw_multi
result = method(recs, \*args, \*\*kwargs)
File "\<decorator-gen-74\>", line 2, in button_immediate_install
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_module.py", line 74, in check_and_log
return method(self, \*args, \*\*kwargs)
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_module.py", line 468, 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 592, in \_button_immediate_function
registry = modules.registry.Registry.new(self.\_cr.dbname, update_module=True)
File "\<decorator-gen-14\>", line 2, in new
File "/usr/lib/python3/dist-packages/odoo/tools/func.py", line 87, in locked
return func(inst, \*args, \*\*kwargs)
File "/usr/lib/python3/dist-packages/odoo/modules/registry.py", line 90, in new
odoo.modules.load_modules(registry, force_demo, status, update_module)
File "/usr/lib/python3/dist-packages/odoo/modules/loading.py", line 488, in load_modules
processed_modules += load_marked_modules(cr, graph,
File "/usr/lib/python3/dist-packages/odoo/modules/loading.py", line 372, in load_marked_modules
loaded, processed = load_module_graph(
File "/usr/lib/python3/dist-packages/odoo/modules/loading.py", line 208, in load_module_graph
registry.init_models(cr, model_names, {'module': package.name}, new_install)
File "/usr/lib/python3/dist-packages/odoo/modules/registry.py", line 531, in init_models
env\['ir.model.fields.selection'\].\_reflect_selections(model_names)
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_model.py", line 1287, in \_reflect_selections
expected = {
File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_model.py", line 1291, in \<dictcomp\>
for index, (value, label) in enumerate(field.selection)
ValueError: too many values to unpack (expected 2)
The above server error caused the following client error:
RPC_ERROR: Odoo Server Error
RPCError@http://localhost:8069/web/assets/192-39f72eb/web.assets_backend.min.js:981:274
makeErrorFromResponse@http://localhost:8069/web/assets/192-39f72eb/web.assets_backend.min.js:985:163
jsonrpc/promise\</\<@http://localhost:8069/web/assets/192-39f72eb/web.assets_backend.min.js:993:34
我的 models.py 看起来像这样:
# -*- coding: utf-8 -*-
from odoo import models, fields, api
class restaurante(models.Model):
_name = 'trabajo_modulo.restaurante'
_description = 'Define el restaurante'
nombre = fields.Char('Nombre', required=True)
nMesas = fields.Integer(string='Número de mesas', required=True)
class mesa(models.Model):
_name = 'trabajo_modulo.mesa'
_description = 'Define la mesa'
num = fields.Integer(string='Número', required = True)
capacidad = fields.Integer(string='Capacidad', default=4)
class empleado(models.Model):
_name = 'trabajo_modulo.empleado'
_description = 'Permite definir las características de un empleado'
nombre = fields.Char('Nombre', required=True)
nif = fields.Char('NIF', required=True)
puesto = fields.Selection(string='Puesto', selection=[('w','Camarero'), ('c','Cocinero'), ('p', 'Repostero')], default='w')
sueldo = fields.Float(string='Sueldo')
fecha_incorporacion = fields.Date(string='Fecha de incorporación')
experiencia = fields.Integer('Experiencia', compute='_get_antiguedad')
@api.depends('fecha_incorporacion')
def _get_antiguedad(self):
for empleado in self:
empleado.experiencia = 0
一开始我以为是因为
puesto
参数,但是注释掉之后一直弹出错误。
原来我没有重新启动服务器。这就成功了。