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之后,我解决了这个问题。