有没有人知道Django中有没有一种方法可以只选择与查询匹配的行数?我写了一个搜索,它将结果分成40个一组,但我也希望显示结果的总数。我可以使用len之类的方法(模型.对象.过滤器(名称__图标=搜索)),但这似乎效率非常低(因为我假设这将生成一个“SELECT * FROM模型”,然后生成所有结果对象)。
odopli941#
使用count():
count()
>>> Model.objects.count() 42 >>> Model.related_set.count() 102 >>> Model.related_set.filter(blah=42).count() 3
6kkfgxo02#
有两种主要的方法来处理这个问题:1.使用Django的count()QuerySet方法-只需将count()附加到相应QuerySet的末尾1.在QuerySet上生成聚合-聚合是指“检索通过汇总或 * 聚合 * 对象集合而派生的值”。Django聚合文档上面的链接指向Django文档中适用的部分。
2o7dmzc53#
对于表/模型的所有行计数:图案:
Model.objects.count()
示例:
User.objects.count()
对于表/模型的特定行数:图案:
Model.objects.filter(user__id=1).count()
User.objects.filter(user__id=1).count()
有关详细信息,请访问:https://docs.djangoproject.com/en/4.1/topics/db/aggregation/
3条答案
按热度按时间odopli941#
使用
count()
:6kkfgxo02#
有两种主要的方法来处理这个问题:
1.使用Django的count()QuerySet方法-只需将count()附加到相应QuerySet的末尾
1.在QuerySet上生成聚合-聚合是指“检索通过汇总或 * 聚合 * 对象集合而派生的值”。Django聚合文档
上面的链接指向Django文档中适用的部分。
2o7dmzc53#
对于表/模型的所有行计数:
图案:
示例:
对于表/模型的特定行数:
图案:
示例:
有关详细信息,请访问:https://docs.djangoproject.com/en/4.1/topics/db/aggregation/