在 Django 中,鉴于我有QuerySet
我要迭代并打印结果,计算对象的最佳选择是什么?len(qs)
or qs.count()
?
(另外考虑到在同一迭代中计算对象也不是一种选择。)
虽然Django 文档 https://docs.djangoproject.com/en/stable/ref/models/querysets/推荐使用count
而不是len
:
注意:不要使用len()
如果您只想确定集合中的记录数,则可以在查询集上使用。使用 SQL 在数据库级别处理计数要高效得多SELECT COUNT(*)
,Django 提供了一个count()
方法正是出于这个原因。
既然你无论如何都要迭代这个 QuerySet,结果将被缓存 https://docs.djangoproject.com/en/stable/topics/db/queries/#caching-and-querysets(除非你正在使用iterator https://docs.djangoproject.com/en/stable/ref/models/querysets/#django.db.models.query.QuerySet.iterator),所以最好使用len
, since 这可以避免再次访问数据库,也可以避免检索不同数量的结果!).
如果您正在使用iterator
,那么出于同样的原因,我建议在迭代时包含一个计数变量(而不是使用计数)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)