Django SELECT COUNT(*) as "__count"对于每个查询

标签 django postgresql django-rest-framework

我目前正在优化我的 Django 应用程序,该应用程序充当我使用 Django Rest Framework 的前端的 API。在 Debug模式下运行我的服务器时,我注意到每次执行查询集时,都会在它之前运行一个查询,它总是看起来像这样:

SELECT COUNT('*') AS "__count" FROM "table_name WHERE ..."

... 部分始终反射(reflect)返回我想要的对象的查询。我不确定这是否仅在调试中运行,QuerySet 对象天生就做的事情,或者我的代码有错误。希望了解为什么会发生这种情况以及我是否需要担心这件事

最佳答案

当您在 ListView 上使用分页时,这发生在 Django Rest Framework 中:

  • 一个查询来获取当前页面的数据。
  • 第二个查询计算同一查询集的记录总数。

关于Django SELECT COUNT(*) as "__count"对于每个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34344351/

相关文章:

postgresql - 在 plpython 中处理反斜杠

python - Django Rest Framework 中匿名用户具有只读访问权限的对象权限

python - 将 Django root 重定向到管理面板

python - 我们可以将连接到不同数据库的两个 Django/python 应用程序组合成一个集成应用程序吗

python - 具有不同创建/修改字段的 Django TimeStamped mixin

postgresql - PostgreSQL 的 Entity Framework Core 代码优先默认值

hibernate - 带有 JPA 2 序列生成的 Postgresql 中的奇怪 id 值

带有查询参数的 Django url 和单个 View 来检索不同的对象集

django - 测试 REST 访问是否必要/好?

python - Django 中的抽象基类模型与代理模型