如何在Django Debug Toolbar的SQL面板查看UPDATE等SQL语句?
解决Django Debug Toolbar仅显示SELECT语句的问题
检查工具栏回调配置
在项目settings.py中,确保SHOW_TOOLBAR_CALLBACK没有过滤非GET请求——UPDATE/INSERT等操作通常通过POST/PUT/DELETE请求触发,若自定义回调限制了请求方法,就会看不到对应SQL。建议使用最基础的调试模式判断逻辑:DEBUG_TOOLBAR_CONFIG = { 'SHOW_TOOLBAR_CALLBACK': lambda request: DEBUG, }确认SQL面板已启用
检查DEBUG_TOOLBAR_PANELS配置,确保包含'debug_toolbar.panels.sql.SQLPanel'——如果自定义了面板列表却漏掉这个,就无法捕获任何SQL语句:DEBUG_TOOLBAR_PANELS = [ # 其他需要的面板... 'debug_toolbar.panels.sql.SQLPanel', # 其他需要的面板... ]开启AJAX请求调试
很多UPDATE操作通过AJAX发起,默认工具栏可能不追踪这类请求,需手动开启:DEBUG_TOOLBAR_CONFIG = { 'SHOW_TOOLBAR_CALLBACK': lambda request: DEBUG, 'SHOW_AJAX_DEBUG': True, }验证查询是否实际执行
若以上配置都没问题,可手动打印数据库查询记录确认UPDATE语句是否真的执行:from django.db import connection # 在执行UPDATE操作的代码后添加 print(connection.queries)如果这里能看到UPDATE语句,说明是工具栏配置疏漏;如果看不到,要排查业务逻辑(比如事务回滚、条件不匹配导致未执行)。
内容的提问来源于stack exchange,提问作者blitz
相关产品推荐
相关产品推荐

