我有Menu模型,它的ForeignKey命名父级与自身相关。
如果父菜单为None,则表示此菜单是父菜单,如果它显示另一个菜单对象,则意味着它是父菜单(多对一关系)的子菜单。
这是我的问题,我想得到所有的菜单和它的子菜单使用prefetch_related,我怎么做呢?
注意:我不想让子菜单每次都进入数据库
这是我的模型课
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
发布于 2020-09-14 17:53:24
例如,您有4级self,您需要这样的代码:
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")https://stackoverflow.com/questions/48991847
复制相似问题