python - 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
有没有其他最好的方法来做同样的事情,或者它肯定需要这两个查询?
解决方案
您可以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)
这应该以一个查询结束。
推荐阅读
- javascript - 获取对象数组内数组的累积长度
- python - Django 在模板中向特定用户显示最新的电子邮件
- python - 在 python 中,如何为其中一列中列表的每个元素创建单独的行?
- r - 如果在 purrr 语言中不存在列,则添加列
- c++11 - 如果 C++ 中有引用参数,如何复制函数的参数?
- python - 为什么 pandas 会删除重复数据?
- sql - 查询一个或多个列具有值的多列
- php - 如何从 ajax $_POST 输出 PHP 数组并将值拆分或分解为键和值
- python - 使用 groupby 和 get_group 将一个数据帧分成几个数据帧
- vuejs2 - vue js页面上的谷歌分析加载时间