首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在自相关模型中使用prefetch_related

如何在自相关模型中使用prefetch_related
EN

Stack Overflow用户
提问于 2018-02-26 15:30:48
回答 4查看 2.4K关注 0票数 10

我有Menu模型,它的ForeignKey命名父级与自身相关。

如果父菜单为None,则表示此菜单是父菜单,如果它显示另一个菜单对象,则意味着它是父菜单(多对一关系)的子菜单。

这是我的问题,我想得到所有的菜单和它的子菜单使用prefetch_related,我怎么做呢?

注意:我不想让子菜单每次都进入数据库

这是我的模型课

代码语言:javascript
运行
复制
class Menu(models.Model):
    title = models.CharField(max_length=30)
    language = models.ForeignKey(Language)
    parent = models.ForeignKey("self", default=None, blank=True, null=True, related_name="submenus")

这是我的查询

代码语言:javascript
运行
复制
pm2 = Menu.objects.filter(parent=None, language__code=language, menutype=menutype).prefetch_related("submenus").order_by("order")
for p in pm2:
    print(p.title)
    print(p.submenus)

当我打印子菜单时,结果是app.Menu.None

EN

Stack Overflow用户

发布于 2020-09-14 17:53:24

例如,您有4级self,您需要这样的代码:

代码语言:javascript
运行
复制
queryset = Menu.objects.filter(parent=None, language__code=language, menutype=menutype).order_by("order").prefetch_related('submenus', 'submenus__submenus', 'submenus__submenus__submenus', "submenus__submenus__submenus__submenus")
票数 -1
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48991847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档