You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo中OneToMany字段如何正确关联两模型?res.sector无反向字段报错怎么解决?

报错原因

该报错是由于OneToMany字段定义时未正确指定必填的inverse_name参数导致的。Odoo中OneToMany属于非存储型的关联字段,必须依赖关联模型(本次报错指向res.sector)中的反向Many2one字段完成关联映射,没有指定合法的反向字段时就会触发该错误。

OneToMany 关联的正确实现方式

以两个模型的关联为例:主模型为res.partner,需要关联多个res.sector记录,实现逻辑如下:

  1. 首先在关联模型res.sector中定义反向关联的Many2one字段
from odoo import models, fields

class ResSector(models.Model):
    _name = 'res.sector'
    _description = '行业信息'

    # 定义指向主模型的Many2one字段,字段名后续会作为主模型OneToMany的inverse_name参数
    partner_id = fields.Many2one(comodel_name='res.partner', string='所属客户')
    # 其他业务字段省略
  1. 在主模型中定义OneToMany字段,填入正确的inverse_name参数
class ResPartner(models.Model):
    _inherit = 'res.partner'

    # inverse_name必须填写为res.sector中指向当前模型的Many2one字段名
    sector_ids = fields.One2many(comodel_name='res.sector', inverse_name='partner_id', string='关联行业')

现有报错的修复步骤

  • 检查你定义OneToMany字段的代码,确认inverse_name参数未留空,且参数值拼写正确
  • 确认comodel_name指定的模型中,确实存在对应名称的Many2one字段,且该字段的关联对象是当前定义OneToMany的模型
  • 代码修改完成后升级对应模块、重启Odoo服务即可生效

内容的提问来源于stack exchange,提问作者Houssem Chouia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:15:05