gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 15:50:55 27 4
gpt4 key购买 nike

我有 Menu具有与自身相关的名为 parent 的 ForeignKey 的模型。

如果 parent 为 None 则表示此菜单是父菜单,如果它显示另一个 Menu 对象,则表示它是其父级的子菜单(多对一关系)

这是我的问题,我想使用 prefetch_related 获取所有带有子菜单的菜单, 我该怎么做?

Note: I do not want to get submenus going database each time in for menu



这是我的模型课
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")

这是我的查询
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

最佳答案

您不需要使用 prefetch_related因为这用于 many-to-many关系,相反,您可以使用 select_related .

所以你的查询将是

pm2 = Menu.objects.filter(parent=None, language__code=language, menutype=menutype).select_related("submenus").order_by("order")

关于django - 如何在自相关模型中使用 prefetch_related,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48991847/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com