Я попытался загрузить один CSV-файл, используя Django форму поля файла, и он работает хорошо. Однако переключение формы поля файла в форму с несколькими полями приводит к ошибке при попытке прочитать файл CSV.
То, что я изначально пытался использовать для одного файла CSV:
в forms.py
class UploadForm(forms.Form):
file_field = forms.FileField(allow_empty_file = False)
в views.py
input_file = request.FILES['file_field']
data_set = input_file.read().decode('UTF-8')
io_string = io.StringIO(data_set)
next(io_string)
model_list = []
for row in csv.reader(io_string, delimiter = ',', quotechar = "|"):
#create Django model object based on the row and append it to model_list
Sample_Model.objects.bulk_create(model_list)
То, что я сейчас пытаюсь использовать для нескольких файлов CSV:
в forms.py:
class UploadForm(forms.Form):
file_field = forms.FileField(allow_empty_file = False, widget=forms.ClearableFileInput(attrs={'multiple': True}))
в views.py:
input_files = request.FILES.getlist('file_field')
for file in input_files:
data_set = file.read().decode('UTF-8')
io_string = io.StringIO(data_set)
next(io_string)
model_list = []
for row in csv.reader(io_string, delimiter = ',', quotechar = "|"):
#create Django model object based on the row and append it to model_list
Sample_Model.objects.bulk_create(model_list)
Я получил ошибку Stop Iteration в строке next(io_string)
. После просмотра его значения и анализа кода кажется, что data_set = file.read().decode('UTF-8')
является источником проблемы, поскольку теперь он не работает должным образом.
Спасибо!