首页 > 解决方案 > 如何在 django 中查看包含 count() 的基础查询

问题描述

我在 Django 2 项目中有以下代码

print(List.objects.filter(user=self.request.user).query)

打印构造的 SQL 查询

但以下

print(List.objects.filter(user=self.request.user).count().query)

抛出错误

print(List.objects.filter(user=self.request.user).count().query)

AttributeError:“int”对象没有属性“查询”

我知道它为什么会发生,因为count()立即返回计数。

我如何查看它构建的查询

标签: pythondjango

解决方案


List.objects.filter(user=self.request.user).count()

此行返回计数作为类型int和整数类型没有属性查询,但是您可以在 django shell 中看到其后面的 sql 查询

from django.db import connection
List.objects.filter(user=self.request.user).count()
connection.queries[-1]['sql']

connection.queries返回该 shell 会话中的字典列表。也不要命名你的模型List。它是一个保留关键字。


推荐阅读