Django新手在这里,我需要对django模型中的某个过滤器进行计数。如果我这样做:my_model.objects.filter(...)。count()我猜它会执行检索所有行的SQL查询,然后才进行计数。据我所知,在没有像“SELECT COUNT(*)FROM ...”那样检索那些行的情况下进行计数会更有效率。有没有办法在django中这样做?
答案 0 :(得分:2)
我猜它会检索所有行的SQL查询,之后只计算
这是错误的假设。来自Django query set API reference count()
count()
在幕后执行SELECT COUNT(*)
通常,QuerySets are lazy - 创建QuerySet
的行为不涉及任何数据库活动。您可以整天将过滤器堆叠在一起,在评估QuerySet
之前,Django实际上不会运行查询。