跳至内容

深入解析 Odoo 的 res.partner:联系人与合作方架构指南

开发者与功能顾问的 Odoo 联系人核心模型全攻略
2026年3月10日
深入解析 Odoo 的 res.partner:联系人与合作方架构指南
Dasolo
| 还没有评论

导言


在 Odoo 中,模型决定了数据在数据库里的组织方式。几乎所有日常业务信息——从订单、发票到客户联系人——都有对应的模型来保存和管理。


无论你是开发工程师还是业务顾问,理解 Odoo 的模型概念都是基础技能。模型不仅定义字段,还描述记录之间的关系与内置业务规则。

本文聚焦 Odoo 中一项核心模型:res.partner。无论你是在做模块开发、第三方系统对接,还是搭建业务流程,这个模型都会频繁出现。

什么是 res.partner 模型


res.partner 用来表示联系人、客户、供应商以及公司主体,是保存“业务往来方”信息的中心表。


这个模型被几乎所有核心应用引用:销售、客户关系管理、财务、采购和电商都依赖 res.partner。创建客户、线索或供应商时,系统要么创建新的 partner 记录,要么关联已有记录。


res.partner 定义在基础模块里,其他模块通过 Odoo 的模型继承机制在此基础上扩展。例如 CRM 会增加与线索相关的字段,会计模块会加入信用和付款条款字段,各模块按需扩展而不重复核心结构。

模型中的关键字段


下面列出 res.partner 中常用且重要的字段,熟悉它们能让你更高效地处理联系人、客户与供应商数据。


1. name

类型:Char。存储记录显示名称——公司记录是公司名称、自然人记录是完整姓名。这个字段出现在大多数视图里,是识别伙伴的主要字段。


2. create_date

类型:Datetime。记录创建时间,由 Odoo 自动维护,便于报表和审计使用。


3. write_date

类型:Datetime。记录最后一次修改时间,同样自动维护,用于追踪更新历史。


4. email

类型:Char。主要电子邮件地址,用于沟通、发票和门户登录。Odoo 在可能情况下会校验邮箱格式。


5. phone

类型:Char。主电话号码,在联系人表单和通讯流程中显示。


6. mobile

类型:Char。移动电话,常用于短信通知或紧急联系。


7. street

类型:Char。地址第一行,构成发票和运输单据的地址块的一部分。


8. street2

类型:Char。地址第二行,用于楼层、单元号或补充地址信息。


9. city

类型:Char。所在城市或地区,地址格式会随国家有所不同。


10. zip

类型:Char。邮编,用于地址校验与配送费计算。


11. state_id

类型:Many2one(res.country.state)。州/省字段,会根据 country_id 过滤;并非所有国家适用。


12. country_id

类型:Many2one(res.country)。国家字段,会影响地址格式、税务规则与本地化逻辑。


13. is_company

类型:Boolean。标识此记录是公司还是个人。公司可以包含子联系人,个人可通过 parent_id 关联到公司。


14. parent_id

类型:Many2one(res.partner)。用于把联系人关联到公司,支持公司-联系人层级关系;在设置后部分字段可从父级继承。


15. child_ids

类型:One2many(res.partner)。parent_id 的反向关系,列出归属某公司的所有联系人,便于从公司跳转到其成员。


16. company_id

类型:Many2one(res.company)。多公司环境下表示该 partner 属于哪个公司,影响可见性和权限。


17. vat

类型:Char。税号或增值税号,会根据国家格式校验。税务和发票合规依赖此字段。


18. customer_rank

类型:Integer。标识是否为客户及其活跃度,系统在发生销售时会自动增加此值,用于筛选和报表优先级。


19. supplier_rank

类型:Integer。表示供应商状态,在产生采购或供应商账单时递增,便于识别供货方。


20. user_id

类型:Many2one(res.users)。负责人或销售人员,用于 CRM 分配、销售团队统计与活动分工。


21. type

类型:Selection。子联系人地址类型:联系人、发票、收货或其他。决定文档使用哪个地址,仅对有父公司的联系人有效。


22. ref

类型:Char。内部参考码,常用于与外部系统对照或自定义编号规则。


23. website

类型:Char。网站地址,在联系表单和电商场景中使用。


24. comment

类型:Html。内部备注,仅内部可见,常用于销售说明或特殊指示。


25. active

类型:Boolean。软删除开关,设为 False 时记录归档并在默认视图中隐藏,但不会物理删除。


26. lang

类型:Selection。首选语言,系统发送邮件和文档时可据此翻译,且可从父级继承。


27. image_1920

类型:Binary。伙伴头像或公司标志,Odoo 保存多种尺寸,展示于表单、报表和网站。


28. category_id

类型:Many2many(res.partner.category)。用于打标签和分类,便于市场分组、筛选与营销活动。

该模型在企业流程中的应用场景


1. 销售与 CRM

销售人员在创建报价时会选择 res.partner 中的客户;同一条伙伴记录可以贯穿线索、机会到订单。customer_rank 与 user_id 决定分配与报表统计。


2. 发票与财务

发票和供应商账单引用 partner 的账单地址,vat 字段影响税金计算,信用额度和付款条款通常记录在伙伴层级。


3. 采购与供应商管理

采购订单与供应商账单同样关联 res.partner,supplier_rank 用于识别活跃供应商,buyer_id(或 user_id)用于分配负责人以便供应商管理。


4. 电商与门户

网站用户注册时会生成 partner 记录,系统用该记录管理订单、报价与门户访问,地址与联系方式都来源于 partner。


5. 多公司与合并场景

在多公司环境中,同一法人实体可能存在多个公司范围内的 partner 记录,company_id 与公司间规则决定数据如何共享与合并。

开发者如何扩展该模型


开发者通过多种方式扩展 res.partner,其中模型继承是最常用的机制。


模型继承

在自定义模块中使用 _inherit = 'res.partner' 来扩展该模型,可以新增字段、重写方法或添加约束。通过继承保持自定义代码在独立模块中,有利于后续升级维护。


新增字段

在继承的模型中定义所需字段,选择合适的字段类型(Char、Many2one、Boolean、Integer、Text、Selection 等)。在多公司环境下,考虑字段是否应关联公司(company-dependent)。


Python 扩展点

可重写 create、write、unlink 等方法来插入业务逻辑,记得在合适位置调用 super()。处理计算字段时需注意依赖关系与触发逻辑。


Odoo Studio

Odoo Studio 允许无需写代码就添加字段和简单自定义,适合快速原型。但对复杂逻辑或长期可维护性,建议使用自定义模块开发。

最佳做法


  • 按正确顺序建立公司与联系人层级:先创建公司,再用 parent_id 添加联系人。
  • 设置 country_id 以保证地址格式和税务规则正确适配当地规范。
  • 当你需要按“商业实体”汇总(例如信用额度或报表)时,使用 commercial_partner_id 来获取顶层主体。
  • 做 API 集成时推荐使用 XML-RPC 或 JSON-RPC 接口,res.partner 在 API 中可完全访问。对外部 ID 的映射需设计好以避免重复。
  • 为自定义字段使用 x_ 前缀或加模块前缀命名,避免与未来 Odoo 版本的字段冲突。

常见错误


  • 创建重复伙伴而不先搜索已有记录。应使用 email_normalized、ref 等字段做去重判断。
  • 混淆 parent_id 与 company_id。parent_id 是公司-联系人层级链接,company_id 用于多公司环境中主体归属。
  • 未给子联系设置 type。发票和收货地址若类型错误会导致单据上使用不正确的地址。
  • 重写核心方法却不调用 super(),这会破坏其他模块的行为并增加升级风险。
  • 为必填自定义字段不提供默认值,导致已有记录在升级时校验失败。

总结与下一步


res.partner 是 Odoo 的关键模型,负责保存联系人、客户与供应商信息。掌握其字段与扩展方式能让你更好地配置、定制与集成 Odoo。

无论你是负责业务流程设计的顾问,还是编写自定义模块的开发者,熟悉 res.partner 都能节省大量时间并降低出错概率。

需要帮助实施 Odoo 吗?


Dasolo 为企业提供 Odoo 实施、定制与优化服务,擅长 API 对接与模块开发。我们的团队对 Odoo 的数据架构与核心模型(例如 res.partner)有深入理解。

如果你在 Odoo 实施、定制或对接方面需要支持,我们可以提供专业帮助。 安排演示 与我们讨论你的项目。

深入解析 Odoo 的 res.partner:联系人与合作方架构指南
Dasolo 2026年3月10日
分析这篇文章
登录 留下评论