You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中如何通过select_related访问Page模型的祖父级数据

解决Django中获取页面父级与祖父级数据的问题

你可以通过Django的**双下划线(__)**语法实现嵌套外键的select_related查询,直接指定parent__parent就能同时获取父级和祖父级的数据,不需要嵌套调用select_related。

正确的查询写法如下:

page = Page.objects.select_related('parent', 'parent__parent').get(slug=self.kwargs['slug'])

之后你可以直接访问层级数据:

  • 父级数据:page.parent
  • 祖父级数据:page.parent.parent(仅当父级存在且父级有对应的父级时有效)

如果想给祖父级起更直观的别名,也可以通过annotate结合Subquery实现,但对于三级页面层级的场景,双下划线的写法已经足够简洁高效。

内容的提问来源于stack exchange,提问作者Michael Romanov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 03:22:37