#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"
, но не добавили журналы, которые его показывают.