class Category:
name = ...
class SubCategory:
name = ...
category = models.ForeignKey(Category)
class Item:
name = ...
category = models.ForeignKey(Category)
subcategory = models.ForeignKey(SubCategory)
class ItemImage:
item = models.ForeignKey(Item)
image = ...
def show_all(request):
categories = Category.objects.all()
return render(request, 'template.html), {'categories':categories})
{% for cat in categories %}
<!-- cat.name -->
{% for subcat in cat %}
<!-- subcat.name -->
{% for item in subcat.item_set.all %}
<!-- item.name -->
<img src="{{item.itemimage_set.first.image.url}}">
itemimage_set
的html中的最后一次迭代会导致对呈现的每个项目进行额外的查询。我在页面上有300个要呈现的项目,然后每个请求超过300个查询。不确定在何处添加prefetch
...还是不可避免?请帮忙!