在Django中调试查询集

时间:2018-10-10 00:26:00

标签: django django-models

在调试模式下,查看确实返回了结果的QuerySet时,如何/在哪里可以看到调试器中的对象?我对要评估的代码不感兴趣(例如Class.objects.all()等,但是更喜欢结构,例如:

- QuerySet
-- object_list
--- object[0]
--- object[1]
--- object[n]

谢谢!

编辑:

比方说,我正在调试器中查看QuerySet,我得到了一堆属性和相关对象,但似乎无法找到要查找的实际对象。如果我有一个类A,并且正在执行qs = A.objects.get.all(),并且正在调试器中查看qs的结构,则会得到很多不同的信息,但找不到A的实际对象/实例

编辑(2): debug screenshot

2 个答案:

答案 0 :(得分:2)

From the documentation

  

在内部, QuerySet 可以被构造,过滤,切片和传递,而无需实际访问数据库。 No database activity actually occurs until you do something to evaluate the queryset

这意味着,无论您调用 Class.objects.all() ,它都不会从数据库中获取实际实例(就像{ Python 中的{1}},


要评估所有对象,请执行以下操作

generators

上面的方法不建议用于生产/实时代码,因为将所有实例存储在all_instance = [i for i in Class.objects.all()]

中太难看了

答案 1 :(得分:0)

假设最好的方法是添加到手表list(Class.objects.all())