gpt4 book ai didi

python - 如何输出Django Admin生成的SQL

转载 作者:行者123 更新时间:2023-12-05 08:58:31 25 4
gpt4 key购买 nike

如何输出 Django 管理员生成的 SQL 以查询 dhangelist 页面的结果?我尝试通过以下方式覆盖 queryset():

def queryset(self, *args, **kwargs):
qs = super(MyAdmin, self).queryset(*args, **kwargs)
print 'sql:',qs.query
return qs

但即使我正在浏览 /admin/myapp/mymodel/?segment=123&date=2012-1-1,这也显示了查询:

sql: SELECT myapp_mymodel.id, myapp_mymodel.segment, myapp_mymodel.start_date
FROM myapp_mymodel ORDER BY myapp_mymodel.start_date ASC

请注意,我在 URL 中指定的过滤器完全没有。

我正在尝试调试一个奇怪的问题,如果我在 SQL 中手动查询表,我会看到一个结果,但 Django 的管理员显示的结果完全不同。我怀疑 Django 中存在导致生成不正确 SQL 的错误,但我需要查看 SQL 以确认问题所在。

我正在使用 Django 1.5。

最佳答案

您可以简单地在 settings.py 中设置此日志记录配置,以便在控制台上打印所有 SQL 查询

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
}
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
'django.db.backends': {
'handlers': ['console'],
'level': 'DEBUG'
},
}
}

这是负责打印的部分

       'django.db.backends': {
'handlers': ['console'],
'level': 'DEBUG'
},

关于python - 如何输出Django Admin生成的SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22998992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com