使用Django模型选择COUNT?

时间:2010-07-30 16:41:05

标签: django

有没有人知道是否有办法只选择与Django中的查询匹配的行数?我有一个搜索我写的将结果分成40组,但我也想显示结果的总数。我可以像len(Model.objects.filter(name__icontains = search))这样的东西,但看起来效率非常低(因为我假设它会产生一个“SELECT * FROM模型”然后产生所有结果对象)。有什么建议吗?

2 个答案:

答案 0 :(得分:43)

有两种主要方法可以解决这个问题:

  1. 使用Django's count() QuerySet method - 只需将count()附加到相应的QuerySet
  2. 的末尾
  3. 生成aggregate over the QuerySet - 聚合是指“检索通过汇总或聚合对象集合而获得的值”。 Ref: Django Aggregation Documentation
  4. 上面的链接是Django文档的适用部分。

答案 1 :(得分:40)

使用count()

>>> Model.objects.count()
42
>>> Model.related_set.count()
102
>>> Model.related_set.filter(blah=42).count()
3