Кодек '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 в базу данных?