Извлечение нечувствительных к регистру слов из списка в django

Я извлекаю значения из файла csv и сохраняю их в списке. Проблема в том, что если нет точного совпадения, элементы/строки не извлекаются. Как я могу осуществить поиск по списку без учета регистра в Django/Python?

def csv_upload_view(request):
    print('file is being uploaded')

    if request.method == 'POST':
        csv_file_name = request.FILES.get('file')
        csv_file = request.FILES.get('file')
        obj = CSV.objects.create(file_name=csv_file)
        result = []

        with open(obj.file_name.path, 'r') as f:
            f.readline()
            reader = csv.reader(f)
            #reader.__next__()
            for row in reader:
                data = str(row).strip().split(',')
                result.append(data)

                transaction_id = data[1]
                product = data[2]
                quantity = data[3]
                customer = data[4]
                date = parse_date(data[5])

                try:
                    product_obj = Product.objects.get(name__iexact=product)
                except Product.DoesNotExist:
                    product_obj = None
                
                print(product_obj)

    return HttpResponse()

Если то, что вы пытаетесь сделать, это просто поиск строки, чувствительной к регистру в, то все, что вам нужно сделать, это понизить регистр вашего поиска и вашего запроса (или повысить).

Вот пересмотренный код

def csv_upload_view(request):
    print('file is being uploaded')

    if request.method == 'POST':
        csv_file_name = request.FILES.get('file')
        csv_file = request.FILES.get('file')
        obj = CSV.objects.create(file_name=csv_file)
        result = []

        with open(obj.file_name.path, 'r') as f:
            f.readline()
            reader = csv.reader(f)
            #reader.__next__()
            for row in reader:
                data = str(row).strip().lower().split(',')
                result.append(data)

                _, transaction_id, product, quantity, customer, date, *_ = data
                date = parse_date(date)

                try:
                    product_obj = Product.objects.get(name__iexact=product)
                except Product.DoesNotExist:
                    product_obj = None
                
                print(product_obj)

    return HttpResponse()

Затем, когда вы пытаетесь сохранить данные, убедитесь, что они хранятся в нижнем регистре.

Также не разбивайте файл csv на ,. Вместо этого используйте библиотеку Python CSV для открытия файла csv, поскольку данные могут содержать ,. Обязательно измените csv.QUOTE так, чтобы он заключал все в ".

Вернуться на верх