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()])