Django manytomany:获取所有集合的所有元素

时间:2015-04-13 09:28:41

标签: python django many-to-many

我有两个与此相关的模型; ItemCategory,它们如下所示:

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(),但这似乎非常低效。是否有一种方法可以在一定数量的查询中执行此操作,而不是根据类别数量进行扩展?我设想结果是包含Categories的{​​{1}}的某种二维数据结构,然后我可以在嵌套循环中在模板中迭代。

我已经看到像this one这样的问题处理类似的问题,但这些问题通常围绕着他们希望查找的一些Items实例(实际上,可以在常量中完成)查询数量。)

1 个答案:

答案 0 :(得分:1)

这正是prefetch_related所做的。

实际上,这会为您提供一个查询集,但预先填充了.items.all()