首页 > 解决方案 > Django 单个查询来计算和使用 for 循环上的数据?

问题描述

我需要显示总计数并使用查询集在模板上循环!但问题是它导致两个查询执行此操作,是否有任何有效的方法来管理单个查询?

data = Data.objects.filter(pk=pk)
count = data.count // 1st query

and then using data to iterate over loop on template // this makes second query 

有没有其他最好的方法来做同样的事情,或者它肯定需要这两个查询?

标签: pythondjangodjango-modelsdjango-queryset

解决方案


您可以len在查询集上使用来强制评估,同时能够获得计数。当您遍历相同的查询集时,这将防止再次访问数据库:

data = Data.objects.filter(pk=pk)
#  Hits the db and evaluates data
count = len(data) 

#  Will not hit the db again
for d in data: 
    print(d)

这应该以一个查询结束。


推荐阅读