在以前版本的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中获得这个完整版本?
答案 0 :(得分:4)
qs=Model.objects.all()
qs.query.as_sql()
应该完成工作as it is shown here
编辑:
我只是尝试并得到同样的错误。
qs=Model.objects.all()
print qs.query
这必须给你你想要的东西(: