QuerySet
объекты имеют метод .count()
, а также могут быть присвоены len()
, если вы ищете:
>>> User.objects.filter(name='Bob')
>>> _.count()
Вы также можете проверить запросы, используя ._as_sql()
>>> User.objects.filter(name='Bob')._as_sql()
или получить все уже сделанные запросы (с указанием времени их выполнения) с помощью
>>> from django.db import connection
>>> connection.queries
Обратите внимание, что простой вызов User.objects.filter(name='Bob')
фактически не превысит любые запросы SQL. Django ждет, пока вы что-то с ним сделаете, прежде чем он выполнит SQL-запрос.
Вы можете сделать запросы более читабельными, установив модуль python sqlparse
и выполнив что-то вроде этого:
>>> import sqlparse
>>> def sql(qs):
... return sqlparse.format(qs._as_sql()[0], reindent=True, keyword_case='upper')
>>> print sql(User.objects.filter(name='Bob'))
См. http://code.google.com/p/python-sqlparse/