跳至内容

理解Odoo的项目架构:项目模型解析

Odoo项目模型的完整指南,供开发人员和功能顾问使用
2026年3月11日
理解Odoo的项目架构:项目模型解析
Dasolo
| 还没有评论

介绍


在Odoo中,模型定义了数据在数据库中的结构和存储方式。您处理的每一条业务数据,从销售订单到项目再到任务,都存在于一个模型中。


理解Odoo模型对于开发人员和功能顾问都是至关重要的。模型是Odoo数据架构的基础。它们定义了Odoo字段、关系和业务逻辑。Odoo中的每个模型都遵循相同的模式。


本文重点介绍Odoo中最重要的模型之一:project.project。无论您是在构建自定义模块、集成外部系统,还是配置项目工作流程,您都将与该模型打交道。

什么是项目.project模型


project.project模型表示Odoo中的一个项目。它是任务、里程碑和团队协作的容器。每个项目都是该模型中的一个记录。


Odoo中的这个模型由项目应用使用。当您在Odoo中创建一个项目时,您会创建一个project.project记录。任务通过task_ids字段与该项目关联。项目定义了工作流程阶段、团队成员和可见性规则。


该模型在项目模块中定义。其他模块通过Odoo模型继承扩展它。销售模块添加基于项目的计费。时间表模块添加时间跟踪。项目规划模块添加甘特调度。每个模块根据需要添加内容,而不重复核心结构。


理解project.project和project.task之间的关系是关键。项目持有共享设置。任务持有单独的工作项。两者都是Odoo项目管理工作流程的核心。

模型中的关键字段


以下是project.project模型中最重要的Odoo字段。理解这些将帮助您有效地处理项目。


1. name

类型:Char。此字段存储项目的名称。它在许多Odoo视图中显示,并且是项目记录的主要标识符。


2. create_date

类型:Datetime。存储记录创建的日期和时间。由Odoo自动管理。对报告和审计很有用。


3. write_date

类型:Datetime。存储最后修改的日期和时间。也由系统自动管理。帮助跟踪数据最后更新时间。


4. active

类型:布尔值。软删除标志。当为假时,项目被归档并从默认视图中隐藏。记录不会被物理删除。


5. 序列

类型:整数。排序的显示顺序。用于项目列表和下拉菜单。较低的值优先显示。


6. 颜色

类型:整数。项目的颜色索引。用于视图和看板,以便在视觉上区分项目。


7. user_id

类型:Many2one (res.users)。项目经理。该用户负责项目,通常显示为默认指派人。


8. company_id

类型:Many2one (res.company)。在多公司设置中,指示该项目属于哪个Odoo公司。


9. partner_id

类型:Many2one (res.partner)。与项目相关联的客户或客户。用于计费和报告。


10. 描述

类型:Html。项目描述。可以包含用于格式化的HTML。用于项目简报和笔记。


11. 开始日期

类型:日期。项目开始日期。用于规划和报告。


12. 日期

类型:日期。项目截止日期或结束日期。用于跟踪和报告。


13. 任务ID

类型:一对多(project.task)。项目中的任务列表。这是项目与任务之间的主要关系。


14. 任务数量

类型:整数。任务数量。从任务ID计算。用于显示和过滤。


15. 类型ID

类型:多对多(project.task.type)。项目的任务阶段或类型。定义工作流程(例如:待办、进行中、完成)。


16. 标签ID

类型:多对多(project.tags)。用于分类的项目标签。用于过滤和组织项目。


17. privacy_visibility

类型:选择。控制谁可以访问项目。选项:受邀的内部用户(私有)、所有内部用户或受邀的门户用户和所有内部用户(公开)。


18. collaborator_ids

类型:一对多(project.collaborator)。分配给项目的团队成员。定义谁可以在项目上工作。


19. favorite_user_ids

类型:多对多(res.users)。标记项目为收藏的用户。用于在仪表板中快速访问。


20. allow_task_dependencies

类型:布尔值。当为真时,任务可以链接到其他任务作为前置任务或后续任务。用于项目规划。


21. allow_milestones

类型:布尔值。当为真时,可以在项目中创建里程碑。里程碑标记关键交付物。


22. milestone_ids

类型:一对多(project.milestone)。项目中的里程碑。用于跟踪关键交付物。


23. rating_active

类型:布尔值。当为真时,客户可以对项目进行评分。用于客户反馈。


24. task_properties_definition

类型:文本(JSON)。项目的自定义任务属性。定义可以添加到任务的额外字段。


25. access_url

类型:字符。客户通过门户访问项目的 URL。用于客户协作。


26. access_token

类型:字符。门户访问的安全令牌。确保只有授权用户可以查看项目。


27. alias_id

类型:多对一(mail.alias)。项目的电子邮件别名。来件电子邮件会自动创建任务。


28. activity_ids

类型:一对多(mail.activity)。项目上的计划活动。用于跟进和提醒。


29. activity_state

类型:选择。活动状态的摘要:今天、逾期或计划中。根据 activity_ids 计算得出。


30. activity_date_deadline

类型:日期。下一个计划活动的日期。用于活动规划。


31. message_ids

类型:一对多(mail.message)。项目上的聊天消息。用于内部沟通。


32. message_follower_ids

类型:一对多(mail.followers)。关注该项目的用户。他们会收到通知。


33. create_uid

类型:多对一(res.users)。创建记录的用户。由 Odoo 自动设置。


34. write_uid

类型:Many2one(res.users)。最后修改记录的用户。由Odoo自动设置。

该模型在业务工作流程中的使用方式


1. 项目创建与管理

当销售人员或项目经理创建项目时,他们设置名称、经理、日期和可见性。项目.project模型存储所有这些信息。然后添加任务并将其链接到项目。


2. 任务工作流

任务在由type_ids定义的阶段中移动。项目经理将任务分配给合作者。项目持有工作流配置和团队结构。


3. 客户门户

当隐私可见性允许门户访问时,客户可以通过access_url查看任务和里程碑。access_token保护链接。这对于客户项目非常有用。


4. 工时记录与计费

通过工时记录模块,项目.project与工时条目链接。通过销售,项目可以与基于项目的销售订单链接。partner_id字段将项目与客户连接。


5. 电子邮件集成

发送到项目别名的来件电子邮件会自动创建任务。alias_id字段将项目与其邮件别名连接。这简化了从电子邮件创建任务的过程。

开发人员如何扩展该模型


开发人员使用多种模式扩展项目.project。Odoo模型继承是主要机制。


模型继承

使用 _inherit = 'project.project' 来扩展模型。这是 Odoo 模型继承的工作原理。添加新的 Odoo 字段,重写方法或添加约束。在 Odoo 中,继承模型将您的更改保存在一个单独的模块中,以便于升级。当您在 Odoo 中继承一个模型时,您可以扩展它而不修改原始模型。


添加字段

在您的继承模型中定义新的 Odoo 字段。使用正确的字段类型:Char、Many2one、Boolean、Integer、Text、Selection。考虑多公司环境下的公司相关字段。


Python 扩展

重写 createwriteunlink 来添加逻辑。使用 super() 调用原始方法。对计算字段及其依赖关系要小心。


Odoo Studio

Odoo Studio 让您无需代码即可添加字段。适合快速定制。对于复杂逻辑或升级,自定义模块更易于维护。

最佳实践


  • 为项目经理分配设置 user_id。明确的所有权提高了问责制。
  • 为每个项目配置 type_ids。定义与您的工作流程匹配的阶段。
  • 正确使用 privacy_visibility。私人项目限制对关注者和管理员的访问。
  • 在构建 API 集成时,使用 XML-RPC 或 JSON-RPC API。project.project 模型在 Odoo 中完全暴露为 API 模型。仔细映射外部 ID。
  • 对于自定义字段,请使用 x_ 前缀或模块前缀,以避免与未来的 Odoo 版本发生冲突。

常见错误


  • 创建任务时不将其链接到项目。每个任务必须有一个 project_id。
  • 忘记设置 type_ids。新项目可能没有阶段,因此任务无法在工作流中移动。
  • 将 privacy_visibility 设置为公开,而实际上应该是私有的。这可能会暴露敏感数据。
  • 覆盖核心方法而不调用 super()。这可能会破坏其他模块或未来的升级。
  • 添加没有默认值的必需自定义字段。现有记录在升级时将无法通过验证。

结论


project.project 模型是 Odoo 项目管理的核心。它存储项目定义、工作流阶段和团队结构。理解其字段以及模块如何扩展它将帮助您有效配置、定制和集成 Odoo。


无论您是设置项目的功能顾问,还是构建自定义模块的开发人员,扎实掌握 project.project 将节省时间并防止错误。

需要帮助进行Odoo实施吗?


Dasolo 帮助公司实施、定制和优化 Odoo。我们专注于 API 集成和 Odoo 开发。我们的团队在 Odoo 数据架构和像 project.project 这样的模型方面拥有深厚的经验。


如果您需要有关 Odoo 实施、自定义模块或集成的帮助,我们随时为您提供支持。 预约演示 以讨论您的项目。

理解Odoo的项目架构:项目模型解析
Dasolo 2026年3月11日
分析这篇文章
登录 留下评论