Odoo: one2many and many2one? KeyError:'___'
Odoo: one2many and many2one? KeyError:'___'
我正在尝试从头开始在 odoo 中构建一个模块。我已经定义了一些简单的 类 但是,当尝试定义 one2many/many2one 字段并安装模块时,出现错误:
File "/opt/odoo/src/OCB12/odoo/fields.py", line 2492, in
_setup_regular_full
invf = comodel._fields[self.inverse_name] 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
模型的 helados.receta
类型 Many2one
模型中定义反向字段名称 autor_id
。
autor_id = fields.Many2one('helados.repostero')
您已经在helado.py文件中重新定义了helados.receta
模型,所以如果您之前定义了逆域,您将得到同样的错误。我想你忘了使用 _inherit
而不是 _name
.
花了一个多小时后,我发现我在继承模型中使用了_name和_inherit,并且在删除_name之后,我解决了这个问题。
我正在尝试从头开始在 odoo 中构建一个模块。我已经定义了一些简单的 类 但是,当尝试定义 one2many/many2one 字段并安装模块时,出现错误:
File "/opt/odoo/src/OCB12/odoo/fields.py", line 2492, in _setup_regular_full invf = comodel._fields[self.inverse_name] 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
模型的 helados.receta
类型 Many2one
模型中定义反向字段名称 autor_id
。
autor_id = fields.Many2one('helados.repostero')
您已经在helado.py文件中重新定义了helados.receta
模型,所以如果您之前定义了逆域,您将得到同样的错误。我想你忘了使用 _inherit
而不是 _name
.
花了一个多小时后,我发现我在继承模型中使用了_name和_inherit,并且在删除_name之后,我解决了这个问题。