Django-数据库查询优化-每个请求超过100个查询

时间:2020-03-07 06:06:21

标签: python django database django-queryset

models.py

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 = ...

views.py

def show_all(request):
  categories = Category.objects.all()
  return render(request, 'template.html), {'categories':categories})

template.html

{% 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 ...还是不可避免?请帮忙!

0 个答案:

没有答案
相关问题