在以下代码中,我在“row[header]”处得到一个错误:
for field in Document._meta.get_fields():
headers.append(field.name)
docs = Document.objects.order_by('id')
for doc in docs:
row = {}
for header in headers:
if hasattr(doc, header):
row[header] = getattr(doc, header)
files.append(row)
Python说:TypeError:列表索引必须是整数或片,而不是str
出什么问题了?你知道吗
Python回溯:
Traceback (most recent call last):
File "/home/niels/PycharmProjects/sitesv/env/lib/python3.5/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/home/niels/PycharmProjects/sitesv/env/lib/python3.5/site-packages/django/core/handlers/base.py", line 126, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/home/niels/PycharmProjects/sitesv/env/lib/python3.5/site-packages/django/core/handlers/base.py", line 124, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/niels/PycharmProjects/sitesv/files/views.py", line 87, in get_file_list
row[header] = getattr(doc, header)
TypeError: list indices must be integers or slices, not str
从评论中确认答案:
变量
row
已经在一个更高的作用域中,所以对它的写入被另一个线程对它的写入所覆盖。你知道吗将
row
的名称改为其他名称可以解决问题。你知道吗相关问题 更多 >
编程相关推荐