介绍
在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 扩展
重写 create、write 或 unlink 来添加逻辑。使用 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 实施、自定义模块或集成的帮助,我们随时为您提供支持。 预约演示 以讨论您的项目。