QuerySet上的range(),用于查询上的tqdm

2024-09-28 22:25:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试向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

Tags: 对象django代码inforobjectsobject错误
1条回答
网友
1楼 · 发布于 2024-09-28 22:25:23

为什么?tqdm()接受任何iterable,您不必使用range()。如果在循环中需要索引,请使用enumerate()。你知道吗

编辑: 你读过tqdm documentation吗?那里什么都有。您正在迭代tqdm对象。如果循环中同时需要tqdm和查询结果,请执行以下操作:

with tqdm(total=len(rows)) as pbar:
    for row in rows:
        # Do whatever with your query result
        pbar.update(1)

相关问题 更多 >