Python 在django 1.2.1中,如何获得像旧的.as_sql这样的东西?

Python 在django 1.2.1中,如何获得像旧的.as_sql这样的东西?,python,django,Python,Django,在django的以前版本中,您可以构造一个queryset,然后对其执行.as_sql()以查找最终查询 在Django 1.2.1中有一个函数。_as_sql(),它返回类似的内容,但不相同 在过去的版本中: qs=Model.objects.all() qs.as_sql() ====> SELECT `model_table.id`, `model_table.name`, `model_table.size` from model_table 这向我展示了很多信息 但是如果我在

在django的以前版本中,您可以构造一个queryset,然后对其执行.as_sql()以查找最终查询

在Django 1.2.1中有一个函数。_as_sql(),它返回类似的内容,但不相同

在过去的版本中:

qs=Model.objects.all()
qs.as_sql() ====>

SELECT `model_table.id`, `model_table.name`, `model_table.size` from model_table
这向我展示了很多信息

但是如果我在Django 1.2.1中尝试它

from django.db import connections
con=connections['default']

qs=Model.objects.all()
qs._as_sql(con) ====>

SELECT U0.`id` from model_table U0
这不会显示实际选择的字段。我知道这些信息在某些地方可用,因为在模板中,我仍然可以:

{% for q in sql_queries %}
    {{q.time}} - {{q.sql}}
{% endfor %}
显示查询的完整版本(包括所选字段)

我的问题是,如何在shell中获得这个完整版本

qs=Model.objects.all()
qs.query.as_sql() 
我应该做这项工作

编辑:

我只是尝试了一下,却得到了同样的错误

qs=Model.objects.all()
print qs.query

这一定是你想要的(:

如何从model_table U0中选择U0.id不显示正在选择哪些字段?model_table.id正在被选择。如果使用与第一次查询相同的三个字段,则看起来像是从model_table U0中选择U0.id',U0.name',U0.size。。我认为仅仅选择id是不够的。实际情况是什么稍后发生的情况是选择了完整信息。例如,qs=Model.objects.select_related().all()qs._as_sql(con)====>选择U0。
id
从模型_表U0中显然这不是SELECT_related的预期功能,对吗?我需要它的原因是因为我正在尝试调试一个将DERE/only与注释相结合的查询,而我能看到django生成的唯一sql是新的“SELECT id”类型的东西,而实际上看不到是什么字段它正在尝试选择。也可以看到它提到了multi-db的情况。您使用的是什么版本的django?在1.2.1中,您的代码生成的“Query”对象没有“as_sql”属性。很抱歉,未测试的代码。请检查我的编辑。如果此解决方案适合您的需要,请将其标记为answeredIt的
str(qs.Query)
,准确地说。请参阅