在Django中,假设我要迭代QuerySet
并打印其结果,那么计算对象的最佳选项是什么?len(qs)
还是qs.count()
?
(还考虑到在同一次迭代中计算对象不是一个选项.)
在Django中,假设我要迭代QuerySet
并打印其结果,那么计算对象的最佳选项是什么?len(qs)
还是qs.count()
?
(还考虑到在同一次迭代中计算对象不是一个选项.)
尽管Django docs人推荐使用count
而不是len
:
注意:如果只想确定集合中的记录数,就不要在查询集上使用
len()
.使用SQL的SELECT COUNT(*)
在数据库级别处理计数要高效得多,而Django正是出于这个原因提供了count()
方法.
因为您无论如何都要迭代此QuerySet,所以使用the result will be cached(除非您使用的是iterator
),因此最好使用len
,因为this avoids hitting the database again, and also the possibly of retrieving a different number of results!).
如果您使用的是iterator
,那么出于同样的原因,我建议您在遍历(而不是使用Count)时包含一个计数变量.