Django:检查查询集以获取应用的过滤器
有没有办法检查查询集并获取有关已应用哪些过滤器/排除的信息?
我需要它来调试:我无法理解为什么我的查询集排除了一些数据......
Is there a way to inspect a queryset and get info about which filters/exclude have been applied?
I need it for debugging: I cannot understand why my queryset excludes some data...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这看起来并不容易做到。每个过滤器以不同的方式应用于查询对象,因此您不会找到布局清晰的
“filter1”、“filter2”、“filter3”
。查看
myqueryset.query.__dict__
- 传入过滤器立即分为相关区域,并且不存储任何记录。详细信息请参见django.db.models.sql.query.Query
。我会检查 SQL。
That doesn't seem easy to do. Each filter is applied differently to the query object so you're not going to find a cleanly laid out
"filter1", "filter2", "filter3"
.Check out
myqueryset.query.__dict__
- the incoming filter is separated into relevant areas immediately and no record stored. Details indjango.db.models.sql.query.Query
.I'd check out the SQL instead.
您还可以使用:
或:
和 来访问您应用的第一个过滤器:
You can use also:
or:
and to access to the first filter that you applied:
如果您在 shell 中进行调试:
如果您在浏览器中发出请求,请使用 django 调试工具栏,这是一个很棒的工具,并且非常有帮助:
Django 调试工具栏
If you are debugging in a shell:
If you are making requests in a browser use django debug toolbar, it's a great tool and can be very helpful:
Django Debug Toolbar