Ошибка типа: индексы списка должны быть целыми числами или срезами, а не str в Django 3.0

#python-3.x #django #django-models #django-views #django-3.0

Вопрос:

При преобразовании данных csv-файла в модели django у меня возникает проблема

 def upload_timesheet(client, user1, csv_file):
    
    field_map_1 = {
        'Date' : 'date',
        'Client Name' : 'worked_on',
        'Employee Name': 'user',
        'Employee Number': 'employee_number',
        'Start Time(HH:MM:SS)': 'start_time',
        'End Time(HH:MM:SS)': 'end_time',
        'Break Taken(HH:MM:SS/HH:MM)': 'breaktime',
        'Assignment id': 'assignment',
        'Rate': 'work_assign',
    }
    
    def get_values_remapped(row):
    
        return {field_map_1[key]: row[key].strip() for key in field_map_1}
 

csv_reader = csv.reader(csv_file)

 total_row_count = sum(1 for row in csv_reader)
total_rows = total_row_count
# reader = csv.DictReader(csv_file,encoding='utf-8', errors='ignore')
reader = csv.reader(csv_file)
print("READER")
try:
    number = int(UploadTimesheet.objects.filter(client=client).
        order_by('-id')[0].order_number)
    # order_number = number   1
   
   
    order_number = number   1
    
except:
    order_number = 1
   

error_rows = []
records = []
errors = OrderedDict([])
count = 0
messages = []
field_errors = []
duplicates = 0
flag = False
try:
    with transaction.atomic():
        for line_number, row in enumerate(reader):
            
            try:
                remapped_row = get_values_remapped(row)
                ....
                .....
 

Вот мое обратное отслеживание ошибок

 Traceback (most recent call last):
  File "/home/harika/lightdegreerespos/mcam/server/mcam/crm/tasks.py", line 3011, in upload_timesheet
    remapped_row = get_values_remapped(row)
  File "/home/harika/lightdegreerespos/mcam/server/mcam/crm/tasks.py", line 2977, in get_values_remapped
    return {field_map_1[key]: row[key].strip() for key in field_map_1}
  File "/home/harika/lightdegreerespos/mcam/server/mcam/crm/tasks.py", line 2977, in <dictcomp>
    return {field_map_1[key]: row[key].strip() for key in field_map_1}
TypeError: list indices must be integers or slices, not str
[2021-09-01 09:34:29,484: ERROR/ForkPoolWorker-1] list indices must be integers or slices, not str
Traceback (most recent call last):
  File "/home/harika/lightdegreerespos/mcam/server/mcam/crm/tasks.py", line 3011, in upload_timesheet
    remapped_row = get_values_remapped(row)
  File "/home/harika/lightdegreerespos/mcam/server/mcam/crm/tasks.py", line 2977, in get_values_remapped
    return {field_map_1[key]: row[key].strip() for key in field_map_1}
  File "/home/harika/lightdegreerespos/mcam/server/mcam/crm/tasks.py", line 2977, in <dictcomp>
    return {field_map_1[key]: row[key].strip() for key in field_map_1}
TypeError: list indices must be integers or slices, not str
 

При попытке извлечь данные из загруженного csv-файла возникает следующая ошибка в Django 3.0-python 3.7 пожалуйста, помогите мне решить эту проблему

Комментарии:

1. Что такое row ? Возможно, вы неправильно используете его в своей строке row[key] .

2. Согласно сообщению об ошибке, row это список. Возможно, вы захотите сначала преобразовать его в диктант.

3. Я изменил свой код, пожалуйста, проверьте

4. Я вижу, что вы добавили отпечаток "ROW IS" , но не добавили журналы, которые его показывают.