range () в QuerySet для tqdm в QuerySet - PullRequest
       18

range () в QuerySet для tqdm в QuerySet

0 голосов
/ 03 ноября 2019

Я пытаюсь добавить индикатор выполнения в цикл объектов Django. Поэтому мне нужно поместить список (QuerySet) в range(), чтобы я мог получить число итераций всего цикла.

Код:

rows = DjangoObjects.objects.all()
for i in tqdm(range(rows)):
    row = rows[i]
    ...

Ошибка:

range() integer end argument expected, got QuerySet.

Попытка кода # 2:

rows = DjangoObjects.objects.all()
for row in tqdm(rows):
    ...

Ошибка:

Exception AttributeError: "'tqdm' object has no attribute 'disable'" in <object repr() failed> ignored

1 Ответ

1 голос
/ 03 ноября 2019

Почему? tqdm () принимает любую итерацию, вам не нужно использовать range (). Если вам нужен индекс в вашем цикле, используйте enumerate ().

Редактировать: Вы прочитали документацию tqdm ? Там все есть. Вы перебираете объекты tqdm. Если вам нужны как tqdm, так и результаты вашего запроса в цикле, сделайте что-то вроде этого:

with tqdm(total=len(rows)) as pbar:
    for row in rows:
        # Do whatever with your query result
        pbar.update(1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...