我正试图从头开始在odoo中构建一个模块。我已经定义了一些简单的类,但是,当试图定义一个one2many/many2one字段,并安装模块,一个错误发生:
File "/opt/odoo/src/OCB12/odoo/fields.py",第2492行,在_setup_regular_fullInvf = commodel ._fields[self.]KeyError: 'autor_id'
如果我注释出现问题的行,它在安装过程中不会报错。但是我觉得这个领域还可以;我已经检查了指南,没有发现错误。我怀疑我的问题可能是在Odoo模块的其他地方(也许不是这样)
class helados_receta(models.Model):
_name = 'helados.receta'
_order = 'sabor desc, name'
sabor = fields.Char('Sabor', required=True)
data_alta = fields.Date('Data de alta')
state = fields.Selection(
[('desarrollo', 'Desarrollo'),
('experimental', 'Experimental'),
('producción', 'En producción')],
'State', default="desarrollo")
temperatura_celsius=fields.Float("Temperatura Conservación", required=True)
receta = fields.Text("Receta", required=True)
autor_id = fields.Many2one('helados.repostero', string='Autor')
class helados_repostero(models.Model):
_name = 'helados.repostero'
_inherit = 'res.partner'
helados_ids=fields.One2many('helados.receta', 'autor_id', string='Recetas')
name=fields.Char("Nombre y apellidos", required=True)
partner_id = fields.Many2one('res.partner', ondelete='cascade')
local = fields.Char("Lugar de Trabajo", required=True)
你可以在这里找到整个模块:https://github.com/conversorbinario/heladeria_odoo由于
需要在引用helados.repostero
模型的Many2one
类型的helados.receta
模型中定义反向字段名称autor_id
autor_id = fields.Many2one('helados.repostero')
你已经在helado.py文件中重新定义了helados.receta
模型,所以如果你之前定义了反向字段,你会得到同样的错误。我想你忘记用_inherit
代替_name
了。
花了一个多小时后,我发现我在继承模型中同时使用了_name和_inherit,在删除_name之后,我修复了这个问题。