在Django 1.2.1中如何获取类似旧版.as_sql的功能?
在以前的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 %}
这能让我看到查询的完整版本(包括选择的字段)
我的问题是,如何在命令行中获取这个完整的版本呢?
1 个回答
4
qs=Model.objects.all()
qs.query.as_sql()
应该可以解决这个问题,就像这里展示的那样
编辑:
我刚试了一下,还是遇到同样的错误。
qs=Model.objects.all()
print qs.query
这应该能给你想要的结果(: