在django 1.2.1中如何获得类似旧的.as_sql的东西?

时间:2010-08-13 06:42:21

标签: python django

在以前版本的django中,您可以构造一个查询集,然后在其上执行.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中获得这个完整版本?

1 个答案:

答案 0 :(得分:4)

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

应该完成工作as it is shown here

编辑:

我只是尝试并得到同样的错误。

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

这必须给你你想要的东西(: