有什么方法可以打印Django ORM正在生成的查询吗?

假设我执行以下语句:Model.objects.filter(name='test')

如何查看生成的SQL查询?

推荐答案

每个QuerySet对象都有一个query属性,您可以将其记录或打印到标准输出中以进行调试.

qs = Model.objects.filter(name='test')
print(qs.query)

请注意,在PDB中,使用p qs.query不会按预期工作,但使用print(qs.query)可以.

如果这不起作用,对于Django旧版本,请try :

print str(qs.query)

Edit

我还使用自定义模板标记(如this snippet中所述)将查询作为HTML注释注入单个请求的范围.

Django相关问答推荐

批量删除多对多条目?

使用序列化器获取Django ORM auth_user. id数据

一次请求中更新整个Django模型

更新或创建异步 Django ORM 实例

如何在 Django 模板中的计数器上进行 for 循环中断?

使用django提交后如何保留html表单数据?

Django 应用程序似乎无法识别相关名称?

在 Django 中提供大文件(高负载)

在 Django 网站上找不到页面 404?

如何在 django-rest-framework 中为 API 使用 TokenAuthentication

为用户添加自定义权限

Django ModelChoiceField optgroup 标签

django Datefield 到 Unix 时间戳

django 管理员操作而不 Select 对象

Python Django:您正在使用 staticfiles 应用程序而没有设置 STATIC_ROOT 设置

django 在 unittest 测试中设置环境变量

访问 django 管理模板中的对象

Django Admin - save_model 方法 - 如何检测字段是否已更改?

在 Django 单元测试中使用 mock 修补 celery 任务

XlsxWriter 对象另存为 http 响应以在 Django 中创建下载