>>> Author.objects.raw("""select * from stack_author where id = 5""")
<RawQuerySet: 'select * from stack_author where id = 5'>
>>> list(_)
[]
>>>
>>> if Author.objects.raw("""select * from stack_author where id = 5"""):
... print 'yes'
...
yes
Вы можете избежать этой ситуации, передав список вместо необработанного набора запросов:
>>> if list(Author.objects.raw("""select * from stack_author where id = 5""")):
... print 'yes'
...
>>>
Нарезка также будет работать:
>>> if Author.objects.raw("""select * from stack_author where id = 5""")[:]:
... print 'yes'
...
>>>
Вы также можете оценить qs в представлении и передать логический результат в шаблон.
Осторожно, индексирование вызовет ошибку IndexError для пустой строки qs:
>>> if Author.objects.raw("""select * from stack_author where id = 5""")[0]:
... print 'yes'
...
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Users/dennisting/.virtualenvs/django-sb/lib/python2.7/site-packages/django/db/models/query.py", line 1379, in __getitem__
return list(self)[k]
IndexError: list index out of range
Использование цикла for, если вы выполняете итерацию, также зависит от того, что вы пытаетесь сделать:
>>> for author in Author.objects.raw("""select * from stack_author where id = 5"""):
... print author
...
>>>