Django反向prefetch_related of foreignkey返回数组

时间:2012-11-28 08:05:10

标签: django django-models django-orm

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

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

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

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

按原样,我的查询不会追溯到pizza_set。我有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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