Кодек 'utf-8' не может декодировать байт 0xb3 в позиции 10: недопустимый начальный байт

Я пытаюсь импортировать csv в django с помощью функции ниже в моем View, но получаю эту ошибку:

'utf-8' кодек не может декодировать байт 0xb3 в позиции 10: недопустимый начальный байт

>

Я получил эту функцию для другого проекта и там она работает нормально, так как файл csv создается из excel, поэтому декодирование utf-8 работает. Но здесь у меня есть cvs непосредственно с некоторой веб-страницы и декодирование не работает.

Я попытался использовать свою функцию без метода decode(), но тогда я получаю другую ошибку:

TypeError at /sales, initial_value must be str or None, not bytes

Моя функция для импорта файла csv в Views.py:

class SalesView(LoginRequiredMixin, SuccessMessageMixin, FormView):
    template_name = "sales.html"
    form_class = UploadSalesData

    def test_func(self):
        return self.request.user.is_superuser

    def post(self, request, *args, **kwargs):
        form: UploadSalesData = UploadSalesData(request.POST, request.FILES)
        if form.is_valid():
            csv_file = form.cleaned_data["uploaded_file"]  
            decoded_file = csv_file.read().decode('utf-8-sig')
            io_string = io.StringIO(decoded_file)
            reader = csv.DictReader(io_string, delimiter=",", skipinitialspace=True) 
            record_count = 0
            for line in reader: 
                SalesData.create_from_csv_line(line=line)
            context = self.get_context_data()
            my_text = 'New data uploaded successfully.'
            messages.success(request, my_text)
            return render(request, self.template_name, context)
        else:
            return self.form_invalid(form)
           

А моя модель:

Итак, мой вопрос: что нужно изменить, чтобы иметь возможность импортировать файл csv в базу данных?

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