【问题标题】:Django manytomany: get all elements of all setsDjango manytomany:获取所有集合的所有元素
【发布时间】:2015-06-18 13:34:56
【问题描述】:

我在这里有两个相关的模型; 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(),但这似乎非常低效。有没有办法在恒定数量的查询中做到这一点,而不是随着类别数量的增加?我设想结果是某种Categories 的二维数据结构,其中包含Items,然后我可以在嵌套循环中在我的模板中进行迭代。

我见过像 this one 这样的问题处理类似的问题,但这些问题通常围绕着他们希望查找的一些 Item 实例(实际上,可以在恒定数量的查询中完成) .

【问题讨论】:

    标签: python django many-to-many


    【解决方案1】:

    这正是prefetch_related 所做的。

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

    【讨论】:

    • 正是我想要的。该示例与我的情况几乎相同。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    • 2014-09-07
    • 2016-11-15
    相关资源
    最近更新 更多