此功能还需要启用 Advanced mode(在 Settings 的右下角切换)。
何时使用多对多
当关系双方都可能存在多个关联时,请使用多对多:| 关系 | 示例 |
|---|---|
| People ↔ Projects | 一个人参与多个项目;一个项目包含多名团队成员 |
| Companies ↔ Tags | 一个公司可以拥有多个标签;一个标签可以应用于多家公司 |
| Products ↔ Orders | 一个产品可以出现在多个订单中;一个订单包含多个产品 |
工作原理
Twenty 在多对多关系中使用 连接对象 模式。 连接对象位于两个对象之间,并存储它们之间的关联:- 到 People 的关系(多对一)
- 到 Projects 的关系(多对一)
先决条件
- 在 Lab 中启用连接关系:前往 Settings → Updates → Lab 并启用 Junction Relations
- 启用 Advanced mode:在 Settings 侧边栏的右下角开启 Advanced mode
- 规划您的数据模型:
- 您要连接哪两个对象?
- 连接对象应如何命名?
步骤 1:创建连接对象
首先,创建用于保存关联的中间对象。- 进入 设置 → 数据模型
- 点击 + 新建对象
- 使用描述性名称(例如,“Project Assignment”、“Team Member”、“Product Order”)
- 单击 保存
步骤 2:从连接对象创建关系
从连接对象向您要连接的两个对象添加关系字段。第一条关系(连接对象 → 对象 A)
- 在 Settings → Data Model 中选择您的连接对象
- 点击 + 添加字段
- 将字段类型选择为 Relation
- 选择第一个对象(例如,“People”)
- 将关系类型设置为 Many-to-One(多个分配可关联到一个人)
- 为这些字段命名:
- 连接对象上的字段:例如,“Person”
- People 上的字段:例如,“Project Assignments”
- 单击 保存
第二条关系(连接对象 → 对象 B)
- 仍在连接对象中,点击 + Add Field
- 将字段类型选择为 Relation
- 选择第二个对象(例如,“Projects”)
- 将关系类型设置为 Many-to-One
- 为这些字段命名:
- 连接对象上的字段:例如,“Project”
- Projects 上的字段:例如,“Team Members”
- 单击 保存
步骤 3:配置连接关系的显示方式
现在配置源对象以直接显示已关联的记录,跳过中间的连接对象。- 进入 设置 → 数据模型
- 选择第一个对象(例如,“People”)
- 找到指向连接对象的关系字段(例如,“Project Assignments”)
- 点击以编辑该字段
- 启用 “This is a relation to a Junction Object”
- 选择 Target relation(例如,“Project” —— 连接对象上指向另一侧的字段)
- 单击 保存
- 在 Data Model 中选择 “Projects”
- 编辑 “Team Members” 关系字段
- 启用连接关系开关
- 将目标关系选择为 “Person”
- 保存
结果
配置完成后:- 在 Person 记录中,“Project Assignments” 字段将直接显示 Projects(而非分配记录)
- 在 Project 记录中,“Team Members” 字段将直接显示 People
示例:People ↔ Projects
以下是完整的操作演示:创建连接对象
- 名称:Project Assignment
- 描述:“将人员与其参与的项目关联起来”
添加关系
-
Project Assignment → People
- 类型:Many-to-One
- Assignment 上的字段:“Person”
- People 上的字段:“Project Assignments”
-
Project Assignment → Projects
- 类型:Many-to-One
- Assignment 上的字段:“Project”
- Projects 上的字段:“Team Members”
配置连接关系显示
-
在 People 对象上:
- 编辑 “Project Assignments” 字段
- 启用连接关系开关
- 目标:“Project”
-
在 Projects 对象上:
- 编辑 “Team Members” 字段
- 启用连接关系开关
- 目标:“Person”
开始使用
- 打开某个 Person 记录 → 直接查看其 Projects
- 打开某个 Project 记录 → 直接查看其团队成员
- 可从任一侧创建新的关联
为关联添加额外数据
由于连接对象是一个真实对象,您可以添加自定义字段来存储关系相关的信息:- 角色:“Developer”、“Designer”、“Manager”
- 开始日期:他们加入项目的时间
- 分配时长:每周在该项目上的工时
限制
- CSV 导入/导出:不支持直接导入多对多关系。 请改为将记录导入连接对象。
- 筛选器:按多对多关系进行筛选的选项可能有限。