次の関数は、すべてのカテゴリとサブカテゴリを取得し、テンプレートに渡します。基本的に、topcategory にはありcategory id = 1
ます。そのため、上位のカテゴリを親として持つカテゴリを取得し、次にそれらのサブカテゴリを取得します。問題は、このコードに基づくクエリが最大 90 個あることです。この情報をレンダリングし、データベース呼び出しの数を削減するためのより効率的な方法を誰かが提案できるかどうか疑問に思っていますか?
def all_models(request):
topcats = Category.objects.filter(parent=1).order_by('category')
subcats = {}
for each in topcats:
subcats [each] = []
subcategories = Category.objects.filter (parent= each.id).order_by('category')
for subcat in subcategories:
subcats[each].append(subcat)
return render_to_response("parts/all.html", {
"topcats":topcats,
"subcats": subcats,
}, context_instance=RequestContext(request))