Python TypeError: объект 'AutoField' не повторяется - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь записать значения полей из экземпляра модели 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' не повторяется

1 Ответ

0 голосов
/ 01 мая 2018

Я не уверен, почему у вас есть двойной цикл. image._meta.get_field(field.name) возвращает поле, поэтому вы не можете пройти через него.

Если у вас есть имя поля, вы можете использовать getattr, чтобы получить значение этого поля для элемента. Возможно, вы хотите что-то вроде:

    writer.writerow([getattr(image, field.name) for field in image._meta.get_fields()])
...