使用Django模型选择COUNT?

And*_*rew 25 django

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

Mat*_*kin 44

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

  1. 使用Django的count()QuerySet方法 - 只需将count()附加到适当的QuerySet的末尾
  2. 通过QuerySet生成聚合 - 聚合是指"检索通过汇总或聚合对象集合而派生的值".参考:Django聚合文档

上面的链接是Django文档的适用部分.


Set*_*eth 41

用途count():

>>> Model.objects.count()
42
>>> Model.related_set.count()
102
>>> Model.related_set.filter(blah=42).count()
3
Run Code Online (Sandbox Code Playgroud)