Python遍历列表调用Requisition模型方法报错的解决
解决AttributeError: 'list' object has no attribute 'set_index'问题
问题根源
你确实猜对了——问题出在总列表requisitions的结构上。你用append()把每页返回的整个Requisition实例列表直接加进了总列表,导致requisitions变成了嵌套列表:[第一页实例列表, 第二页实例列表, ...]。遍历的时候拿到的是子列表,而非单个Requisition实例,自然会触发AttributeError。
两种修复方案
方案1:用extend()替代append()(推荐)
extend()会把可迭代对象的元素逐个追加到总列表,直接得到扁平的Requisition实例列表:
# 替换原来的 requisitions.append(page_data) requisitions.extend(page_data)
之后直接遍历requisitions调用set_index()就正常了:
for req in requisitions: req.set_index()
方案2:嵌套遍历已有的嵌套列表
如果已经生成了嵌套结构的requisitions,可以通过两层遍历处理:
for page_list in requisitions: for req in page_list: req.set_index()
排查小技巧
以后遇到类似类型错误,可先打印元素类型确认:
for item in requisitions: print(type(item)) # 如果输出<class 'list'>,就说明是嵌套结构问题
内容的提问来源于stack exchange,提问作者ads
相关产品推荐
相关产品推荐

