Python TypeError: 'AutoField' object is not iterable
Python TypeError: 'AutoField' object is not iterable
我正在尝试将字段值从 Django 模型实例写入 csv 文件,并且我正在使用以下代码,其中 image
是模型 Image
的一个实例。我试图在不具体命名字段名称的情况下执行此操作。
with open(output_file, "a") as outfile:
writer = csv.writer(outfile)
writer.writerow([item.value for item in image._meta.get_field(field.name)] for field in image._meta.get_fields())
#writer.writerow([field.name for field in Image._meta.get_fields()])
outfile.close()
当我使用注释掉的行时,我得到了我期望的字段名称。我现在正在尝试获取实际的字段值,并且我得到了新的 writerow
.
这是给我
TypeError: 'AutoField' object is not iterable
我不确定你为什么有一个双 for 循环。 image._meta.get_field(field.name)
returns 一个字段,所以你不能遍历它。
获得字段名称后,您可以使用 getattr
获取项目的该字段的值。也许你想要这样的东西:
writer.writerow([getattr(image, field.name) for field in image._meta.get_fields()])
我正在尝试将字段值从 Django 模型实例写入 csv 文件,并且我正在使用以下代码,其中 image
是模型 Image
的一个实例。我试图在不具体命名字段名称的情况下执行此操作。
with open(output_file, "a") as outfile:
writer = csv.writer(outfile)
writer.writerow([item.value for item in image._meta.get_field(field.name)] for field in image._meta.get_fields())
#writer.writerow([field.name for field in Image._meta.get_fields()])
outfile.close()
当我使用注释掉的行时,我得到了我期望的字段名称。我现在正在尝试获取实际的字段值,并且我得到了新的 writerow
.
这是给我
TypeError: 'AutoField' object is not iterable
我不确定你为什么有一个双 for 循环。 image._meta.get_field(field.name)
returns 一个字段,所以你不能遍历它。
获得字段名称后,您可以使用 getattr
获取项目的该字段的值。也许你想要这样的东西:
writer.writerow([getattr(image, field.name) for field in image._meta.get_fields()])