使用Notion API创建数据库内子页面(子项)的显示异常问题求助
解决Notion API创建数据库子页面(表格层级显示)的问题
核心逻辑澄清
Notion数据库里的表格层级显示,靠的是数据库内的关联属性(Relation),而不是页面的parent字段。把页面parent设为另一个页面,只会让它出现在父页面底部的“子页面”列表,但不属于数据库,自然不会在表格视图里显示。要让子页面在表格里成为父页面的子项,必须满足两个条件:
- 子页面和父页面属于同一个数据库
- 子页面的关联属性(比如你的
Parent item)正确指向父页面
问题1:创建子页面仅在父页面底部显示
你创建页面时应该把parent设为数据库ID,而不是父页面ID。同时在创建时直接设置Parent item属性,示例代码:
import requests NOTION_TOKEN = "your_token_here" DATABASE_ID = "your_database_id_here" PARENT_PAGE_ID = "110a8a775e2a806dbc41c21dc16bfbda" url = "https://api.notion.com/v1/pages" headers = { "Authorization": f"Bearer {NOTION_TOKEN}", "Content-Type": "application/json", "Notion-Version": "2022-06-28" # 建议使用最新稳定版本 } payload = { "parent": {"database_id": DATABASE_ID}, "properties": { "Name": { "title": [{"text": {"content": "子页面测试"}}] }, "Parent item": { "relation": [{"id": PARENT_PAGE_ID}] } } } response = requests.post(url, json=payload, headers=headers) print(response.json())
问题2:更新Parent item属性无效果
你提供的payload格式本身没问题,但大概率是这几个原因:
- 属性名称不匹配:确认
Parent item和数据库里的属性名完全一致(包括大小写、空格,Notion API对名称大小写敏感),比如数据库里是Parent Item(大写I),你传Parent item就会无效。 - 请求格式错误:Python里用
requests.patch时,必须用json=payload参数,不能用data=payload,否则Notion无法正确解析JSON。 - 权限不足:检查你的API token是否有该数据库的编辑权限,token需要在Notion集成里添加对应数据库。
- 页面不属于目标数据库:如果子页面原本就不是该数据库的页面(比如创建时parent设成了父页面),更新关联属性也没用,必须先把页面移动到数据库里(通过API更新页面的parent为数据库ID)。
正确的更新页面属性代码示例:
PAGE_ID = "your_child_page_id_here" url = f"https://api.notion.com/v1/pages/{PAGE_ID}" payload = { "properties": { "Parent item": { "relation": [{"id": PARENT_PAGE_ID}] } } } response = requests.patch(url, json=payload, headers=headers) print(response.json())
最后:表格视图开启层级显示
即使关联属性设置正确,还要在Notion界面里配置表格视图:
- 打开数据库的表格视图
- 点击右上角的「⋮」(更多选项)→「层级」
- 选择
Parent item作为父级属性,这样子页面就会缩进显示在父页面下方
内容的提问来源于stack exchange,提问作者ela
相关产品推荐
相关产品推荐

