Django manytomany:获取所有集合的所有元素
Django manytomany: get all elements of all sets
我有两个相关的模型; Item
和 Category
,它们看起来如下:
class Category(models.Model):
name = models.CharField(max_length=200)
items = models.ManyToManyField(Item)
class Item(models.Model):
name = models.CharField(max_length=200)
我想创建一个列出所有 Categories
及其各自 Items
的页面。我意识到我可以迭代 Category.objects.all()
并为每个实例检索 .items.all()
,但这似乎非常低效。有没有一种方法可以在恒定数量的查询中执行此操作,而不是在按类别数量缩放的查询中执行此操作?我设想结果是某种包含 Items
的 Categories
的二维数据结构,然后我可以在我的模板中的嵌套循环中迭代它。
我见过像 this one 这样处理类似问题的问题,但这些问题通常围绕着他们希望查找的一些 Item
实例(实际上,可以在固定数量的查询)。
这正是 prefetch_related
所做的。
事实上,这为您提供了一个查询集,但 .items.all()
已预先填充。
我有两个相关的模型; Item
和 Category
,它们看起来如下:
class Category(models.Model):
name = models.CharField(max_length=200)
items = models.ManyToManyField(Item)
class Item(models.Model):
name = models.CharField(max_length=200)
我想创建一个列出所有 Categories
及其各自 Items
的页面。我意识到我可以迭代 Category.objects.all()
并为每个实例检索 .items.all()
,但这似乎非常低效。有没有一种方法可以在恒定数量的查询中执行此操作,而不是在按类别数量缩放的查询中执行此操作?我设想结果是某种包含 Items
的 Categories
的二维数据结构,然后我可以在我的模板中的嵌套循环中迭代它。
我见过像 this one 这样处理类似问题的问题,但这些问题通常围绕着他们希望查找的一些 Item
实例(实际上,可以在固定数量的查询)。
这正是 prefetch_related
所做的。
事实上,这为您提供了一个查询集,但 .items.all()
已预先填充。