Sel*_*maz 7 django django-models django-orm
我有一个Menu模型,其中ForeignKey命名为父亲与自己相关.
如果parent为None,则表示此菜单为父菜单,如果它显示另一个Menu对象,则表示它是其父对象的子菜单(多对一关系)
这是我的问题,我希望使用其子菜单获取所有菜单,我该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")
Run Code Online (Sandbox Code Playgroud)
这是我的查询
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)
Run Code Online (Sandbox Code Playgroud)
当我打印子菜单时,结果是 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"
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
400 次 |
| 最近记录: |