在 Django 中调试查询集

Dev*_*ing 4 django django-models

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

- QuerySet
-- object_list
--- object[0]
--- object[1]
--- object[n]
Run Code Online (Sandbox Code Playgroud)

谢谢!

编辑:

假设我正在调试器中查看查询集,我得到了一堆属性和相关对象,但我似乎找不到我想要的实际对象。如果我有一个类 A 并且我正在执行qs = A.objects.get.all()并且正在查看调试器中的结构qs,我会得到一堆不同的项目,但找不到 A 的实际对象/实例。

编辑(2): 调试截图

JPG*_*JPG 7

从文档来看

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

这意味着,无论您调用什么Class.objects.all(),它都不会从数据库中获取实际实例(就像generatorsPython中一样)


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

all_instance = [i for i in Class.objects.all()]
Run Code Online (Sandbox Code Playgroud)

不建议将上述方法用于您的生产/实时代码,因为将所有实例存储在一个中太难看list