选择一个使用Django模型的计数?

f0ofjuux  于 2023-01-18  发布在  Go
关注(0)|答案(3)|浏览(90)

有没有人知道Django中有没有一种方法可以只选择与查询匹配的行数?我写了一个搜索,它将结果分成40个一组,但我也希望显示结果的总数。我可以使用len之类的方法(模型.对象.过滤器(名称__图标=搜索)),但这似乎效率非常低(因为我假设这将生成一个“SELECT * FROM模型”,然后生成所有结果对象)。

odopli94

odopli941#

使用count()

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

6kkfgxo02#

有两种主要的方法来处理这个问题:
1.使用Django的count()QuerySet方法-只需将count()附加到相应QuerySet的末尾
1.在QuerySet上生成聚合-聚合是指“检索通过汇总或 * 聚合 * 对象集合而派生的值”。Django聚合文档
上面的链接指向Django文档中适用的部分。

2o7dmzc5

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/

相关问题