Django: Как узнать, есть ли в RawQuetySet строки?Там нет метода count () - PullRequest
1 голос
/ 26 июля 2010

Я думаю, что название говорит само за себя.

У меня сложный запрос с подзапросом, но иногда он не возвращает значений, что абсолютно нормально. Но я не могу предотвратить сообщение ValueError, потому что я не могу узнать, пусто ли RawQuerySet или нет. Объект RQS всегда присутствует, но если я пытаюсь получить доступ к его первой строке results[0].id, я получаю ошибку

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/local/lib/python2.6/dist-packages/django/db/models/query.py", line 1379, in __getitem__
    return list(self)[k]
IndexError: list index out of range

Предложения?!

1 Ответ

0 голосов
/ 26 июля 2010

Поймать исключение?

try:
    return results[0].id
except IndexError:
    pass # no rows returned

или

import itertools

results_list = []
try:
    for i in itertools.count(0):
      results_list.append(results[i])
except IndexError:
    pass # no more rows
return results_list
...