【问题标题】:Django reverse prefetch_related of foreignkey to return arrayDjango 反向 prefetch_related 的外键返回数组
【发布时间】:2012-11-16 00:48:37
【问题描述】:

this example继续,我想执行这样的反向查询:

result = Topping.objects.all().prefetch_related('pizza_set')

我希望这会返回一个数组数组。在每个单独的数组中,返回比萨饼的反向查找本身应该是一个数组。

result = ['name':'Pineapple', 'pizza_set':[{'name':'Hawaiian'... ... }]]

按原样,我的查询没有通过 Pizza_set 进行跟踪。任何想法我做错了什么?

【问题讨论】:

标签: django django-models django-orm


【解决方案1】:

首先,这里没有“数组”(在 Python 中我们称之为“列表”,但没关系)。调用all() 的结果是一个QuerySet,它是一个类似列表的容器——它包含的东西也不是列表,而是相关类型的对象——在本例中是Topping 实例。每个实例都是从数据库中填充的,并且使用prefetch_related 的要点 - 如您的链接中所述 - 是它为每个实例填充一个内部缓存,然后在您调用相关集时使用该缓存。您不需要直接访问该属性,但是当您对 Topping 查询集中的任何项目调用 obj.pizza_set.all() 时,它将被使用,您可以通过检查数据库命中来验证这一点。

【讨论】:

  • 我实际上确实需要这些属性。感谢您纠正我对数组的使用。
猜你喜欢
  • 2018-10-16
  • 1970-01-01
  • 2019-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-24
  • 2018-09-25
  • 2013-02-24
相关资源
最近更新 更多