убедитесь, что у него есть количество столбцов, необходимых перед анализом строки.В противном случае вы будете пытаться получить доступ к столбцам, которые не существуют, и закончится сбоем.
for column in csv.reader(io_string, delimiter=',', quotechar="|"):
if len(column) >= HEADER_LENGTH:
_, created = GrowerMaster.objects.update_or_create(
grower_no =column[0],
surname =column[1],
name =column[2],
initials =column[3],
area =column[11],
national_id =column[15],
contractor =column[21]
)
В качестве альтернативы попробуйте обработать исключение (которое, вероятно, будет IndexError
):
for column in csv.reader(io_string, delimiter=',', quotechar="|"):
try:
_, created = GrowerMaster.objects.update_or_create(
grower_no =column[0],
surname =column[1],
name =column[2],
initials =column[3],
area =column[11],
national_id =column[15],
contractor =column[21]
)
if created:
created_records+=1
except IndexError:
# skip the row
pass