--- title: 创建多对多关系 description: 当双方都有多个条目时,使用连接对象将记录相互关联。 --- 多对多关系使您能够在关系双方连接多个记录。 例如:许多 People 可以参与许多 Projects,并且每个 Project 可以包含许多 People。 **Beta 功能**:连接关系目前处于 Beta 阶段。 在按照本指南操作之前,请先在 **Settings → Community → Features** 中启用它们。 此功能还需要启用 **Advanced mode**(在 Settings 左下角切换)。 ## 何时使用多对多 当关系双方都可能存在多个关联时,请使用多对多: | 关系 | 示例 | | ----------------- | -------------------------- | | People ↔ Projects | 一个人参与多个项目;一个项目包含多名团队成员 | | Companies ↔ Tags | 一个公司可以拥有多个标签;一个标签可以应用于多家公司 | | Products ↔ Orders | 一个产品可以出现在多个订单中;一个订单包含多个产品 | ## 工作原理 Twenty 在多对多关系中使用 **连接对象** 模式。 连接对象位于两个对象之间,并存储它们之间的关联: ``` People ←→ Project Assignments ←→ Projects ``` 该 **Project Assignments** 对象(连接对象)具有: * 到 People 的关系(多对一) * 到 Projects 的关系(多对一) 启用连接关系开关后,Twenty 将直接显示已关联的记录,而不再展示中间的连接对象记录。 ## 先决条件 1. **在 Beta 功能中启用连接关系**:前往 **Settings → Community → Features** 并启用 **Junction Relations** 2. **启用 Advanced mode**:在 Settings 侧边栏左下角开启 **Advanced mode** 3. 规划您的数据模型: * 您要连接哪两个对象? * 连接对象应如何命名? ## 步骤 1:创建连接对象 首先,创建用于保存关联的中间对象。 1. 进入 **设置 → 数据模型** 2. 点击 **+ 添加对象** 3. 使用描述性名称(例如,"Project Assignment"、"Team Member"、"Product Order") 4. 将“跳过创建名称字段”切换为开启 新建连接对象 5. 单击 **保存** **命名约定**:使用能描述关系的名称,例如 "Project Assignment" 或 "Team Membership"。 这会让数据模型更易理解。 ## 第 2 步:在对象与连接对象之间创建关系 从您的两个对象分别向连接对象添加关系字段。 ### 第一条关系(对象 A → 连接对象) 1. 在 **Settings → Data Model** 中选择您的第一个对象 2. 单击 **+ 添加关系** 3. 选择连接对象(例如,"Project Assignments") 4. 将关系类型设置为 **One-To-Many**(一个人可以关联到多个分配) 5. 为这些字段命名: * People 上的字段:例如,"Project Assignments" * 连接对象上的字段:例如,"Person" 6. 单击 **保存** ### 第二条关系(对象 B → 连接对象) 1. 在 **Settings → Data Model** 中选择您的第二个对象 2. 单击 **+ 添加关系** 3. 选择连接对象(例如,"Project Assignments") 4. 将关系类型设置为 **One-To-Many**(一个项目可以关联到多个分配) 5. 启用 **"This is a relation to a Junction Object"** 6. 为这些字段命名: * 连接对象上的字段:例如,"Project" * Projects 上的字段:例如,"Team Members" 7. 单击 **保存** ## 步骤 3:配置连接关系的显示方式 现在配置源对象以直接显示已关联的记录,跳过中间的连接对象。 1. 进入 **设置 → 数据模型** 2. 选择第一个对象(例如,"People") 3. 找到指向连接对象的关系字段(例如,"Project Assignments") 4. 点击以编辑该字段 5. 启用 **"This is a relation to a Junction Object"** 6. 选择 **Target relation**(例如,"Project" —— 连接对象上指向另一侧的字段) 7. 单击 **保存** ## 结果 配置完成后: * 在 **Person** 记录中,"Project Assignments" 字段将直接显示 **Projects**(而非分配记录) * 在 **Project** 记录中,"Team Members" 字段将直接显示 **People** 连接对象仍然存在并存储关联,但 UI 呈现的是更简洁的多对多视图。 ## 示例:People ↔ Projects 以下是完整的操作演示: ### 创建连接对象 * 名称:**Project Assignment** * 描述:"将人员与其参与的项目关联起来" ### 添加关系 1. **People → Project Assignment** * 类型:One-to-Many * People 上的字段:"Project Assignments" * Assignment 上的字段:"Person" 2. **Projects → Project Assignment** * 类型:One-to-Many * Projects 上的字段:"Team Members" * Assignment 上的字段:"Project" ### 配置连接关系显示 1. 在 **People** 对象上: * 编辑 "Project Assignments" 字段 * 启用连接关系开关 * 目标:"Project" 2. 在 **Projects** 对象上: * 编辑 "Team Members" 字段 * 启用连接关系开关 * 目标:"Person" ### 开始使用 * 打开某个 Person 记录 → 直接查看其 Projects * 打开某个 Project 记录 → 直接查看其团队成员 * 可从任一侧创建新的关联 ## 为关联添加额外数据 由于连接对象是一个真实对象,您可以添加自定义字段来存储关系相关的信息: * **角色**:"Developer"、"Designer"、"Manager" * **开始日期**:当人加入项目时 * **分配时长**:每周在该项目上的工时 要访问这些数据,请直接导航到连接对象,或通过 API 查询。 ## 限制 * **CSV 导入/导出**:不支持直接导入多对多关系。 请改为将记录导入连接对象。 * **筛选器**:按多对多关系进行筛选的选项可能有限。 ## 相关内容 * [关系字段](/l/zh/user-guide/data-model/capabilities/relation-fields) — 关系类型说明 * [创建自定义对象](/l/zh/user-guide/data-model/how-tos/create-custom-objects) — 如何创建对象 * [创建关系字段](/l/zh/user-guide/data-model/how-tos/create-relation-fields) — 基本关系设置