如何通过Notion API获取关联表字段对应的关联块数据?
Notion关联列读取关联块信息解决方案
问题根因
你当前使用的调用逻辑中,关联(Relation)类型列直接通过getattr读取仅会返回关联目标的ID值/ID数组,不会自动拉取关联块的完整结构化数据,需要手动调用接口拉取对应ID的块信息。
解决方案
- 第一步:先从行属性中读取关联ID列表,验证返回值结构
- 第二步:遍历ID列表调用
client.get_block()拉取关联块完整信息,兼容单关联/多关联场景的代码实现如下:
block = client.get_block(notion_table_link) rows = [row for row in block.collection.get_rows()] for row in rows: # 读取关联列的ID值 relation_val = getattr(row, some_attribute_from_my_table) # 统一转换为数组格式,兼容单关联、无关联的场景 relation_ids = relation_val if isinstance(relation_val, list) else [relation_val] if relation_val else [] # 批量拉取关联块数据 related_blocks = [client.get_block(rid) for rid in relation_ids] # 后续可直接读取关联块的所有属性,示例如下 for related_block in related_blocks: # 读取关联块标题 print(related_block.title) # 读取关联块的其他自定义字段 # print(getattr(related_block, "other_custom_field"))
补充说明
如果你使用的是Notion官方新版API,拉取数据库条目时关联字段默认仅返回ID和基础元数据,同样需要调用Retrieve a page接口传入关联ID拉取完整页面数据。
内容的提问来源于stack exchange,提问作者Samvel Danielyan
相关产品推荐
相关产品推荐

