当QuerySet传递给上下文处理器时,Django执行相同的查询5次

时间:2012-07-08 07:33:51

标签: python django optimization django-queryset

我有这个QuerySet:

brand = get_object_or_404(Brand, shortcut=shortcut)
ads = Ad.objects.filter(mod__submodel__model__brand = brand).values('id')

但由于某种原因,django执行相同的查询5次(查询数量不依赖于行数)。这是它:

SELECT ••• FROM "catalog_ad" INNER JOIN "catalog_mod" ON ("catalog_ad"."mod_id" = "catalog_mod"."id") INNER JOIN "catalog_submodel" ON ("catalog_mod"."submodel_id" = "catalog_submodel"."id") INNER JOIN "catalog_model" ON ("catalog_submodel"."model_id" = "catalog_model"."id") WHERE "catalog_model"."brand_id" = 1 LIMIT 21

那么为什么django会执行相同的查询5次?

更新:只有当我将ads传递给上下文处理器时才会发生这种情况:

return render(request, 'cat.html', {ads:ads})

1 个答案:

答案 0 :(得分:1)

这是一个非常愚蠢的问题。仅当django无法找到所需模板且DEBUG设置为true时才会发生这种情况。