'Odoo: one2many and many2one? KeyError:'___'
I am trying to work a bit on building a module in odoo from scratch. I've defined some simple classes but, when trying to define a one2many/many2one field, and install the module, an error occurs:
File "/opt/odoo/src/OCB12/odoo/fields.py", line 2492, in _setup_regular_full invf = comodel._fields[self.inverse_name] KeyError: 'autor_id'
If I comment the line where the problem seems to happen, it won't complain during installation. BUT the field seems ok to me; i ve checked the guides and cannot find the error. I suspect my problem can be somewhere else in the Odoo module (maybe it is not the case)
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)
You can find the whole module here: https://github.com/conversorbinario/heladeria_odoo Thanks
Solution 1:[1]
You need to define the inverse field name autor_id
in helados.receta
model of type Many2one
that references helados.repostero
model.
autor_id = fields.Many2one('helados.repostero')
You have redefined the helados.receta
model in helado.py file, so if you define the inverse field before you will get the same error. I think you forgot to use _inherit
instead of _name
.
Solution 2:[2]
After spending more than an hour I found that I used _name and _inherit both in the inherit modle and after removing _name, I fixed this issue.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Kenly |
Solution 2 | Zahid |